ホームページ >バックエンド開発 >PHPチュートリアル >模擬ログインを使用して学校システムの朝の実行データを取得できませんでした。助けを求めてください。

模擬ログインを使用して学校システムの朝の実行データを取得できませんでした。助けを求めてください。

WBOY
WBOYオリジナル
2016-06-23 13:57:081244ブラウズ

最近、PHP の模擬ログインを学習しており、学校の体育システムで実践したいと思っていましたが、失敗しました。私のコードのどこが間違っているのか教えてください。

[いくつかの情報]
システムアドレスにログインします: http://210.35.75.247:8080/student/studentFrame.jsp
(ユーザー名: 1101001、パスワード: 1101001、役割: Student)
朝のランニングアドレスを確認してください: http ://210.35.75.247:8080/student/queryCheckInfo.jsp

[コードは次のとおりです]

<?php  $cookie_file = tempnam('./temp','cookie');$login_url = 'http://210.35.75.247:8080/student/studentFrame.jsp';$post_fields  = 'userName=1101001&passwd=1101001';$ch = curl_init($login_url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);curl_exec($ch);curl_close($ch);$url = 'http://210.35.75.247:8080/student/queryCheckInfo.jsp';$ch = curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);curl_exec($ch);curl_close($ch);?>


[初投稿、ありがとうございます! ]


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

あなたのコードには大きな問題はありません。成功しました

<?php$url = 'http://210.35.75.247:8080/student/studentFrame.jsp';$name = '1101001';$pw = '1101001';$params = array(    'userName' => $name,    'passwd' => $pw,);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));$con = curl_exec($ch);curl_close($ch);echo preg_replace('/<frame src="\//Us', '<frame src="http://210.35.75.247:8080/', $con);

2階に戻りましたwander_wind:


ありがとうございます!しかし、実際にキャプチャしたいのは朝のランニング データなので、シミュレートされたログインを通じてログイン Cookie を保存し、このアドレス (http://210.35.75.247:8080/student/queryCheckInfo.jsp) にアクセスして、朝のランニングの数。ログインエラーが表示される理由がわかりません。もう一度確認してください。トラブル!ありがとう!



あなたのコードには大きな問題はありません。curl_exec() は結果を返しません。結果は空白です。試してみるとログインは成功しました。

まずは を宣言してください。いくつかの名詞...
フレームページstudent/studentFrame.jspは、フォーム送信のアクションアドレスです
学生情報ページstudent/studentInfo.jspは、フレームページのiframeによって自動的に読み込まれるsrcです

朝のランニング結果student/queryCheckInfo .jsp firebug を使用してログインプロセスを追跡したところ、フレームページの iframe によってロードされた学生情報にパラメータがあることがわかりました?username=...&passwd=..... 実際のログインプロセスは学生情報ページ。失敗したログインページをエコーなしでファイルに保存して確認してみました。フレームページの HTML は、追加のジャンプ js があることを除いて、成功したログインページの HTML とほぼ同じです。学生情報ページのJSESSIONIDを使ったログインは成功しました。フレームページと比べると違います。管理システムは大変ですね


<?php$url = 'http://210.35.75.247:8080/student/studentFrame.jsp';$name = '1101001';$pw = '1101001';$params = array(    'userName' => $name,    'passwd' => $pw,);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));$con = curl_exec($ch);curl_close($ch);echo preg_replace('/<frame src="\//Us', '<frame src="http://210.35.75.247:8080/', $con);


ああ、http://210.35.75.247:8080/student/studentInfo.jsp が問題を引き起こしていることがわかりました。すでに成功しています!ありがとう! !


どういたしまして、私は初心者です、一緒に勉強しましょう
最初にいくつかの名詞を宣言しましょう...

フレーム ページ Student/studentFrame.jsp はフォーム送信用のアクション アドレスです

学生情報ページ Student/studentInfo .jsp はフレーム ページの iframe です 自動的に読み込まれる src
朝のランニングの結果 Student/queryCheckInfo.jsp
firebug を使用してログイン プロセスを追跡したところ、フレーム ページの iframe によって読み込まれた学生情報にparameters?username= が含まれていることがわかりました。 ..&passwd=....、実際のログインプロセスは学生情報ページにあるはずです。失敗したログインページをエコーなしでファイルに保存して確認してみました。フレームページの HTML は、追加のジャンプ js があることを除いて、成功したログインページの HTML とほぼ同じです。学生情報ページのJSESSIONIDを使ったログインは成功しました。フレームページと比べると違います。お尻の管理システムが大変ですね


<?php$url1 = 'http://210.35.75.247:8080/student/studentInfo.jsp';$url2 = 'http://210.35.75.247:8080/student/queryCheckInfo.jsp';$name = '1101001';$pw = '1101001';$params = array(    'userName' => $name,    'passwd' => $pw,);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url1 . '?' . http_build_query($params));curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$con = curl_exec($ch);preg_match('/Set-Cookie: (.*);/Us', $con, $match);$cookie = $match[1];curl_setopt($ch, CURLOPT_URL, $url2);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_COOKIE, $cookie);$con = curl_exec($ch);curl_close($ch);echo $con;



ポイントがあればポイントを付与できるようです
なお、ここにはリンクがないようです

あはは、ごめんなさい、してませんでした初めて状況を理解したので、すでにポイントを与えています〜ありがとう!

いくつかポイントがもらえるようです
また、こちらでタイアップも行われるようです

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