ホームページ >バックエンド開発 >PHPチュートリアル >(マスター) PHP カール検証コードはログインの問題をシミュレートします

(マスター) PHP カール検証コードはログインの問題をシミュレートします

WBOY
WBOYオリジナル
2016-06-20 12:59:011174ブラウズ

function curlLogin($login_url, $cookieFile_code, $cookieFile_login, $loginParams, $target_url)	{	    $ch = curl_init($login_url);	    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_code); //验证码session值上传	    curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFile_login); //获取登录cookie		curl_setopt($ch, CURLOPT_HEADER, 1);	    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);	    curl_setopt($ch,CURLOPT_POST, 1);	    curl_setopt($ch,CURLOPT_POSTFIELDS, $loginParams); //提交查询信息	    curl_exec($ch);	    curl_close($ch);	    $ch = curl_init($target_url);	    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_login);	    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);	    $content = curl_exec($ch);	    if(curl_errno($ch)){	    	return curl_error($ch);	    }	    curl_close($ch);	    return $content;	}

検証コードを使用して Web サイトへのログインをシミュレートしようとしています。セッション値と手動で認識された検証コードを使用してログインをシミュレートした後、検証コードを使用します。ログイン状態を維持するために Cookie を取得したいのですが、取得したのは次の 2 行のコードを使用したものです。それを変更する方法を教えてください。
  curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_code); //验证码session值上传  curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFile_login); //获取保持登录的cookie


ディスカッションへの返信 (解決策)

これには 2 つの手順が必要です。最初に確認コードの Cookie を取得します。
そして送信してから、ログイン後に Cookie を取得します。

投稿した内容をまったく読んでいませんでした。確認コード Cookie を取得したことはすでにお伝えしましたが、現在ログイン Cookie を取得しています。

手順に従いましたか? (関数を与えるだけでは何も説明できません)
1. フォームページにアクセスします (sessionid がある場合があります)
2. 認証コードの画像を本人確認フォームに読み取ります
3. 送信されたメッセージを受け取ります検証コード データ
4. 包括的なデータをフォーム ターゲット ページに送信します

3 を除き、各ステップには
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_code);
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookieFile_login);

明らかに、これらのタスクは 1 つの関数で完了することはできません
うまく書くと、使用できる関数は 1 つだけですが、複数回呼び出す必要があります

試してみたところ、ログインに成功しました。ログインをシミュレートしたシステムは、最初から最後まで 1 つの Cookie 値しか持たず、それは検証コードが生成されたときに生成されたものでした。 Cookie を送信するには、curl_setopt($ch ,CURLOPT_COOKIEFILE, $cookieFile_code); 操作を使用し、内部のセッション値を正規表現で照合し、送信用のヘッダーに添付しました。ログインのシミュレーションに失敗した理由は、サーバーがソース ページを特定しましたが、仮想ソースを設定しなかった場合、ページへのログインは拒否されます。また、創立者の学事事務システムへのログインを模擬してみました。私の失敗体験が他の人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。