2011-01-25 170 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);