2013-05-28 38 views
0

所以我想从以下形式的值张贴到卷曲URL(脚本名称是pagination.php)就像这样:是否可以将数据发布到curl url?

<form action="pagination.php" method="post"> 
<input style="width:50%" type="text" name="search_term"> 
<input type="submit" value="Submit"> 
</form> 

$search_term = $_POST['search_term']; 

echo $search_term; 

$post_data = array('q' => $search_term); 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
curl_setopt($ch, CURLOPT_URL, 'http://gdata.youtube.com/feeds 
/api/videos?q='.urlencode($search_term).'&safeSearch=none&orderby=viewCount& 
v=2&alt=json&start-index=1&max-results=50'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
$output = curl_exec($ch); 
curl_close($ch); 

$data = json_decode($output,true); 

$info = $data["feed"]; 
$video = $info["entry"]; 
$nVideo = count($video); 



echo "<ul style='float:right'>"; 
foreach($video as $video) { 
echo '<img src="'.$video['media$group']['media$thumbnail'][0]['url'].'"><br><br>'; 
$title = $video['title']['$t']; 
$video_id = $video['media$group']['yt$videoid']['$t']; 
echo '<a href="search_4.php?video_get_id='.$video_id.'">'.$title.'</a>'; 
echo '<br>'; 
} 

当我运行像这样的事情的发生代码(是的我附和了$ SEARCH_TERM,以确保它不为空),但是如果我手动分配值$ SEARCH_TERM这样

$search term = 'baseball'; 

一切工作正常。是否有关于cURL的内容不允许发布数据?谢谢!

回答

3

你看上去mising

curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

编辑 现在回答这个问题没有提出的“如何使这项工作?”

像@ Kostanos说,看起来问题是在你的网址断行。这工作:

<form action="pagination.php" method="post"> 
<input style="width:50%" type="text" name="search_term"> 
<input type="submit" value="Submit"> 
</form> 
<?php 
if($_POST) 
    { 
    $search_term = $_POST['search_term']; 

    echo $search_term; 

    $post_data = array('q' => $search_term); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'http://gdata.youtube.com/feeds/api/videos?q='.urlencode($search_term).'&safeSearch=none&orderby=viewCount&v=2&alt=json&start-index=1&max-results=50'); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    $output = curl_exec($ch); 
    curl_close($ch); 

    $data = json_decode($output,true); 

    $info = $data["feed"]; 
    $video = $info["entry"]; 
    $nVideo = count($video); 



    echo "<ul style='float:right'>"; 
    foreach($video as $video) 
    { 
     echo '<img src="'.$video['media$group']['media$thumbnail'][0]['url'].'"><br><br>'; 
     $title = $video['title']['$t']; 
     $video_id = $video['media$group']['yt$videoid']['$t']; 
     echo '<a href="search_4.php?video_get_id='.$video_id.'">'.$title.'</a>'; 
     echo '<br>'; 
    } 

    } 
+0

这是否与放置这些行的位置有关?我上面编辑了我的代码,请让我知道你是否认为我做得正确。谢谢! –

+0

正如在另一个答案中提到的那样,它看起来像是发送GET请求,所以我回答了您的实际问题,但没有解决您的问题。所以,就像@ kostanos说的那样,在你的GET请求中仔细地构造查询字符串,你应该在没有我提到的那些行的情况下得到正确的返回值。 – TecBrat

+0

我听到你在说什么,当我将$ search_term设置为像$ search_term ='baseball'这样的常量时,所有内容都可以正常工作。但是当搜索词被设置为$ search_term = $ _POST ['search_term'];没有用。这实际上是我在代码中做出的唯一改变。当我回应$搜索条件,以确保实际发布的值我得到一个结果。 –

1

根据您的代码:

... 
$search_term = $_POST['search_term']; 
... 
curl_setopt($ch, CURLOPT_POSTFIELDS, $search_term); 
... 

$ search_form是不正确的POSTFIELDS值,它应该是key=>value配对数组或字符串像这样:&key=value&key1=value1..

尝试使用此:

... 
$search_term = $_POST['search_term']; 
$post_data = array('q' => $search_term); 
... 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
... 

顺便说一句:For youtube API

您不需要POST请求,只需GET请求。从代码中删除以下两行:

curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $search_term); 

而替换该行(确保它是一条线,没有任何字符串中进入,似乎你的编辑器插件进入到长字符串!):

curl_setopt($ch, CURLOPT_URL, 'http://gdata.youtube.com/feeds/api/videos?q=' . urlencode($search_term) . '&safeSearch=none&orderby=viewCount&v=2&alt=json&start-index=1&max-results=50'); 

PS。通过将urlencode添加到$ search_term

+0

谢谢...我做了你所建议的更改(我也修改了上面的代码),但仍然没有任何结果。 –

+0

我刚刚检查了你的脚本,它的效果很好,请确保'curl_setopt($ ch,CURLOPT_URL,'http://gdata.youtube.com/feeds/api/videos?q='.urlencode($search_term) '&safeSearch = none&orderby = viewCount&v = 2&alt = json&start-index = 1&max-results = 50');' 没有进入,它应该在一行! – Kostanos

+0

这很奇怪,代码适合你。我甚至尝试将url分配给一个变量,然后回显变量以确保没有任何空格。这是我在别的地方做的一个小错误。 –

相关问题