事實上,它變得非常混亂,我甚至不確定捲曲是否是罪魁禍首。所以,這裏的PHP:curl發送GET而不是POST
$creds = array(
'pw' => "xxxx",
'login' => "user"
);
$login_url = "https://www.example.net/login-form"; //action value in real form.
$loginpage = curl_init();
curl_setopt($loginpage, CURLOPT_HEADER, 1);
curl_setopt($loginpage, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($loginpage, CURLOPT_URL, $login_url);
curl_setopt($loginpage, CURLOPT_POST, 1);
curl_setopt($loginpage, CURLOPT_POSTFIELDS, $creds);
$response = curl_exec($loginpage);
echo $response;
我得到的報頭(符合正常的,成功的請求的頭標),其次是登錄頁面(我猜捲曲捕獲在這個由於重定向),其中有對「不良聯繫類型」的影響存在錯誤。
我認爲問題是請求主機設置爲請求服務器,而不是遠程服務器,但後來我注意到(在Firebug中),請求發送爲GET,而不是POST。
如果我複製登錄網站的表單,將它剝離爲只包含帶有值的表單元素,並放置完整的網址,它的工作原理非常棒。所以我認爲這不是一個安全問題,登錄請求必須在同一臺服務器上發起,等等(我甚至擺脫了空的隱藏值和所有設置其他一些cookie的JS)。
再次,我很快就感到困惑。
任何想法,爲什麼它顯示爲GET,或爲什麼它不起作用?
謝謝你的擡頭。當我做了一個幾乎相同的curl_exec到另一臺服務器,我看到一個帖子(與表單值我設置),所以我想螢火(在Net標籤)是準確的。可以肯定的是,我在本地機器上使用wireshark?我猜不是,因爲請求是服務器端的。如何爲服務器配置它? – Anthony 2009-06-05 15:22:43
@Anthony Wireshark的,必須運行在任何機器上的PHP正在運行或一個你發送請求。如果wireshark沒有安裝,請查找tcpdump。我在捲曲相關的東西很感興趣,所以如果你有不適合在此框中進一步的問題,不要猶豫,通過IM或電子郵件聯繫我(見我的地址配置文件)。 – phihag 2009-06-05 18:36:20