2013-05-28 35 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分配給一個變量,然後回顯變量以確保沒有任何空格。這是我在別的地方做的一個小錯誤。 –

相關問題