2011-11-16 52 views
0

我需要將一些數據發佈到我的服務器上的腳本。我正在使用curl和冗長的錯誤報告。有誰知道爲什麼這不起作用嗎?如何排除故障 - 使用CURL將數據發佈到腳本

感謝,

發帖腳本

function makePost($postvars, $count) { 

$url = 'http://servername.something.org/php/callback-f.php'; 

$ch = curl_init(); 

curl_setopt ($ch, CURLOPT_POST, true); 
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 

$result = curl_exec($ch); 
curl_close($ch); 
} 

其發佈到腳本包含這一行:

<?php log_error("success",ERROR_LOG_TO_STDERR); ?> 

我的POST變量一個字符串,它看起來像這樣:

surname=smth&address1=No+Value&this=that 

的結果我得到的回覆是這樣的:

Connected to myserver.org port 80 
> POST /php/callback-f.php HTTP/1.1 
Host: myserver.org 
Pragma: no-cache 
Accept: */* 
Content-Length: 1510 
Content-Type: application/x-www-form-urlencoded 

< HTTP/1.1 301 Moved Permanently 
< Location: https://myserver/php/callback-f.php 
< Content-Length: 0 
< Date: Wed, 16 Nov 2011 16:21:23 GMT 
< Server: lighttpd/1.4.28 
* Connection #0 to host left intact 
* Closing connection #0 
+1

看起來您的測試腳本只能通過https訪問,但您通過http發佈。 – liquorvicar

回答

1

你能嘗試使用:

 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
+0

嗨,謝謝你的快速回答。不幸的是,這是行不通的。我得到以下錯誤: – rix

+0

hmmm,問題現在是這樣的:SSL:證書使用者名稱'通用名稱(例如,你的名字)'與目標主機名'myservername.org'不匹配 – rix

+0

51 curl_setopt($ ch,CURLOPT_POST,true ); 52 curl_setopt($ ch,CURLOPT_URL,$ url); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1); 54 curl_setopt($ ch,CURLOPT_POSTFIELDS,$ postvars); 55 curl_setopt($ ch,CURLOPT_VERBOSE,1); 56 curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,1); 57 curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,0); 58 curl_setopt($ ch,CURLOPT_SSL_VERIFYHOST,0); 好吧,我看到的問題是這301重定向 - 感謝您的幫助! 現在剩下的全部是這樣的:*違反RFC 2616/10.3.2並從POST切換到GET 捲曲切換以在重定向時得到。無論如何要阻止這種情況發生? – rix

1

你得到返回301錯誤。您嘗試的網址是http://servername.something.org,301表示該頁面位於https://myserver(請注意https協議)。

301錯誤也不應該在沒有用戶同意的情況下在POST上重定向。