ホームページ >バックエンド開発 >PHPチュートリアル >(マスター) PHP カール検証コードはログインの問題をシミュレートします
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; }
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); 操作を使用し、内部のセッション値を正規表現で照合し、送信用のヘッダーに添付しました。ログインのシミュレーションに失敗した理由は、サーバーがソース ページを特定しましたが、仮想ソースを設定しなかった場合、ページへのログインは拒否されます。また、創立者の学事事務システムへのログインを模擬してみました。私の失敗体験が他の人の参考になれば幸いです。