2011-01-25 166 views
1
<?php 
set_time_limit(0); 
$php_userid = "my yahoo id"; 
$php_password = "my yahoo password"; 
$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"; 
$reffer = "http://mail.yahoo.com/"; 
$LOGINURL = "https://login.yahoo.com/config/login?"; 
$POSTFIELDS = ".tries=1&.src=ym&.intl=us&.u=3jtlosl6ju4sc.v=0&.challenge=NZYhS1spj7zunoVhpd6KRNqaF5Kz&hasMsgr=0&.chkP=Y&.done=http://mail.yahoo.com&.pd=ym_ver=0&c=&ivt=&sg=&pad=3&aad=3&login".$php_userid."&passwd".$php_password.""; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$LOGINURL); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_REFERER, $reffer); 
$result = curl_exec ($ch); 
curl_close ($ch); 
echo $result; 
?> 

是否有錯誤?我做錯了什麼,但我找不到它。請讓我知道,如果你能看到我的錯誤在哪裏?我需要設置這個捲曲類。Php捲曲問題

+0

你能否解釋多一點`它不是working`。什麼不起作用?你是否收到任何錯誤訊息?預期的行爲是什麼? – HoLyVieR 2011-01-25 18:46:41

+0

@HoLyVieR,謝謝你的回答。哦,是的,我忘了說出來。第一個人可以成功登錄我的帳戶,第二個人(php curl)無法登錄。我需要登錄頁面。 – 2011-01-25 18:49:10

回答

3

POST數據是畸形的,它應該是:

[...] "login=" . urlencode($php_userid). "&passwd=" . urlencode($php_password) . "" 

而不是

[...] "login".$php_userid."&passwd".$php_password."" 

您應該使用urlencode確保在POST數據傳遞的數據是否正確發送,你在哪裏失蹤登錄名和密碼值爲=

2

您應該使用curl_error來確定cURL過程中失敗的內容。您可以在此處看到cURL錯誤代碼列表:http://curl.haxx.se/libcurl/c/libcurl-errors.html

$result = curl_exec($ch); 
$error = curl_error($ch); 
print $error; 
curl_close ($ch); 
+0

感謝您的幫助。我添加了你的代碼。它沒有給出任何錯誤。 – 2011-01-25 18:52:55

+0

我在這一行注意到`$ POSTFIELDS =「.tries = 1&.src = ym&.intl = us&.u = 3jtlosl6ju4sc.v = 0&.challenge = NZYhS1spj7zunoVhpd6KRNqaF5Kz&hasMsgr = 0&.chkP = Y&.done = http:// mail。 yahoo.com&.pd = ym_ver = 0&c =&ivt =&sg =&pad = 3&aad = 3&login「。$ php_userid。」&passwd「。$ php_password。」「;``login````passwd後沒有等號`。也許這是造成一個問題? – 2011-01-25 18:55:29

0

我假設.challenge字段被動態生成。您的curl請求使用無效的挑戰,因此服務器會阻止它。

+0

你是對的。我發現1個以上的錯誤..感謝您的幫助。 – 2011-01-25 19:03:15

0
  1. $cookie = cookie.txt";
  2. 插入後:curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS); this: curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);