2011-01-25 12 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

+0

@HoLyVieR、お返事ありがとうございます。ああ、私はそれを言うのを忘れていた。最初のアカウントは私のアカウントに正常にログインすることができ、2番目のアカウント(php curl)はログインできません。ログインページに移動します。 –

答えて

3

、それは次のようになります。

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

代わりの

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

あなたはPOSTデータに渡されたデータが正常に送信され、あなたがどこ不足していることを確認するためにurlencodeを使用する必要がありますloginとpasswdの値は=です。

+0

私はそれをテストしました。あなたは正しいです。yahooはこのエラーを示しています:「あなたが使用しているブラウザはサインインを拒否します(クッキーは拒否されました)」...あなたのコードは正しいと思います。ありがとう.. –

2

curl_errorを使用して、cURL処理中に何が失敗したのかを判断する必要があります。私は.challengeフィールドは、動的に生成されますと仮定しhttp://curl.haxx.se/libcurl/c/libcurl-errors.html

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

ご協力いただきありがとうございます。あなたのコードを追加しました。それは何の誤りも与えない。 –

+0

'$ POSTFIELDS =" .tries = 1&.src = ym&.intl = us&.u = 3jtlosl6ju4sc.v = 0&.challenge = NZYhS1spj7zunoVhpd6KRNqaF5Kz&hasMsgr = 0&.chkP = Y&.done = http:// mail。 &php_password "; $ php_password。" ";' login 'と 'passwdの後ろに等号がありません。 '。多分それが問題を引き起こしていますか? –

0

:あなたはここでcURLのエラーコードのリストを見ることができます。あなたのカール要求は無効なチャレンジを使用しているため、サーバーはそれをブロックします。 POSTデータが不正な形式である

+0

あなたは正しいです。私は1つのエラーが見つかりました..あなたの助けに感謝します。 –

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

あなたのコードにいくつかのコメントを追加できますか?それは現在受け入れられているものに何を追加しますか?コメントは他の人があなたの答えを理解するのに役立ちます – Yaroslav