phpシミュレーション登録レポート
phpを習い始めたら、phpで授業表をつかんでみたいです.インターネットで何人かの経験紹介を見て、試しに作ってみました.いくつかの文章の時間が長くなりましたので、実験は成功しませんでした.そして自分で考えてみて、一つを作ってもいいです.今日は分かち合います
まず学校の教務システムに登録されているURL(例えば:http://210.44.159.22/default2.aspx)その後、私達の学校のシステムは検証コードを迂回したバグを修復しましたので、まだ検証コードを記入する必要があります.したがって、コードアドレスを検証する必要があります.http://210.44.159.22/CheckCode.aspx)
住所を知ったら、chromeブラウザでF 12を押してデバッグモードを開けて、networkをクリックして、ログインを見て、具体的にそれらのデータ段を提出しました.
ここで提出されたデータを見ることができます.txtUserNameは学籍番号です.textBox 2はあなたが提出したパスワードです.そして、ウェブページのソースコードを調べてみます.VIEWSTATEは隠しフィールドです.Radio Button List 1は学生です.これを知っています.登録のシミュレーションを開始します.
ステップ1:phpのcurlシミュレーションを利用してログインページを要求するとログインページに戻り、正規表現を利用して_を抽出することができます.VIEWSTATEフィールドの内容は、同時にこのページのクッキーを取得し、このクッキーを使って検証コードピクチャを要求してこそ、検証コードが一致することが保証されます.ここで得たクッキーと_VIEW STATEは残して、後は登録用の到着をシミュレーションします.他の人のやり方を見たらクッキーをファイルに保存してから読みます.私のやり方は一つのphpファイルの中で、取得したログインページクッキーと_VIEWSTATEはcookieとして保存して、検証コードのピクチャを出力します.これを参照すると、認証コードのピクチャが表示されます.そして登録したphpを書いてこのクッキーを読みに行きます.以下はcodeimg.phpです.
ログインが成功したら、他の操作を真似してもいいです.例えば、成績を調べるなら、原理は大体同じです.それから私も初心者です.間違ったところは教えてください.すべてのソースを見たいのですが、コメントエリアでお願いします...このままでいいです.
まず学校の教務システムに登録されているURL(例えば:http://210.44.159.22/default2.aspx)その後、私達の学校のシステムは検証コードを迂回したバグを修復しましたので、まだ検証コードを記入する必要があります.したがって、コードアドレスを検証する必要があります.http://210.44.159.22/CheckCode.aspx)
住所を知ったら、chromeブラウザでF 12を押してデバッグモードを開けて、networkをクリックして、ログインを見て、具体的にそれらのデータ段を提出しました.
ここで提出されたデータを見ることができます.txtUserNameは学籍番号です.textBox 2はあなたが提出したパスワードです.そして、ウェブページのソースコードを調べてみます.VIEWSTATEは隠しフィールドです.Radio Button List 1は学生です.これを知っています.登録のシミュレーションを開始します.
ステップ1:phpのcurlシミュレーションを利用してログインページを要求するとログインページに戻り、正規表現を利用して_を抽出することができます.VIEWSTATEフィールドの内容は、同時にこのページのクッキーを取得し、このクッキーを使って検証コードピクチャを要求してこそ、検証コードが一致することが保証されます.ここで得たクッキーと_VIEW STATEは残して、後は登録用の到着をシミュレーションします.他の人のやり方を見たらクッキーをファイルに保存してから読みます.私のやり方は一つのphpファイルの中で、取得したログインページクッキーと_VIEWSTATEはcookieとして保存して、検証コードのピクチャを出力します.これを参照すると、認証コードのピクチャが表示されます.そして登録したphpを書いてこのクッキーを読みに行きます.以下はcodeimg.phpです.
<?php
header("Content-Type: application/json; charset=gbk");
header("Content-Type: image/jpeg");
$url='http://210.44.159.22/default2.aspx';//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER,true);
$contents =curl_exec($ch);
preg_match('/Set-Cookie: (.*);/iU',$contents,$str); //
$cookie = $str[1]; // COOKIE(SESSIONID)
$verify_code_url='http://210.44.159.22/CheckCode.aspx';//
curl_setopt($ch, CURLOPT_URL, $verify_code_url);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_COOKIE,$cookie);
$img = curl_exec($ch);
curl_close($ch);
echo $img;//
$pattern = '/<input type="hidden" name="__VIEWSTATE" value="(.*?)" \/>/is';//
preg_match_all($pattern,$contents,$matchs);
setcookie("message",$matchs[1][0]."&".$cookie);// cookie cookie
?>
私は自分でhtmlページを書いて、ajaxを通じてphpと通信しました.前に記入した学号のパスワードを取得して、認証コードはajaxを通じて後端のload.phpに送信して、load.phpの中でアナログ登録して、そして授業表に取得して、下にいくつかのload.phpのコードを貼ります.これはデータ準備です.$message=$_COOKIE['message'];// cookie
$arr = explode('&',$message);
$data=array("xuehao"=>$_POST['xuehao'],// ajax
"pwd"=>$_POST["pwd"],// ajax
"yzm"=>$_POST["yzm"],// ajax
"viewstate"=>$arr[0],
"cookie"=>$arr[1]
);//
$url='http://210.44.159.22/default2.aspx';// ,
$post=array(
'__VIEWSTATE'=>$data["viewstate"],
'txtUserName'=>$data["xuehao"],
'TextBox2'=>$data["pwd"],
'txtSecretCode'=>$data["yzm"],
'RadioButtonList1'=>' ',
'Button1'=>'',
'lbLanguage'=>'',
'hidPdrs'=>'',
'hidsc'=>''
);//POST
自分で書いた関数が足りないように注意してください.setopt($ch、CURLOPT HuFOLLOWLOCATION、true);TrueCrypt 302ジャンプ後のページをキャプチャするために、正規の教務システムが登録されてから一つにジャンプします.http://210.44.159.22/xs_main.aspx?xh=学号ページ、そしてガールズを少なくしてはいけません.setopt($ch、CURLOPT_UREFERER、教務システムのその住所に登録してください).これを追加しないと、模擬要求の授業時間にObject move to hereのページに戻ります.function login_post($url,$cookie,$post,$fromurl){
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER,true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // , echo
//curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);
curl_setopt($ch, CURLOPT_COOKIE,$cookie);
if($post!="")
{
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true); // ,
curl_setopt($ch,CURLOPT_POSTFIELDS,$post); //post
}else{
curl_setopt($ch, CURLOPT_REFERER,$fromurl);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
}
$result=curl_exec($ch);
curl_close($ch);
return $result;
}//curl
それから始めます.<span style="white-space:pre"> </span>$con2=login_post($url,$data["cookie"],http_build_query($post),"");// ,
$pattern = '/<span id="xhxm">(.*?) <\/span>/is';
// , ,
if(!preg_match_all($pattern,$con2,$matchs)){//
$p = '/<script .*?>alert[(]\'(.*?)\'[)];.*?<\/script>/i';
if(preg_match($p,$con2,$ex))
{
$error=iconv('gbk','UTF-8',$ex[1]);
}
}else{//
<span style="white-space:pre"> $urls='http://210.44.159.22/xskbcx.aspx?xh='.$data["xuehao"];//
<span style="white-space:pre"> </span>$refer='http://210.44.159.22/xs_main.aspx?xh='.$data["xuehao"];</span>
$con2=login_post($urls,$data["cookie"],"",$refer);
$pattern='/<td align="Center" rowspan=".*?".*?>(.*?)<\/td>/is';
<span style="white-space:pre"> preg_match_all($pattern,$con2,$matchs)</span>;
}
入力した情報が間違っていなければ、最後に戻ってきた配列$matchの中にはあなたのすべての授業があります.最後に自分で処理して、フロントエンドに戻って表示すればいいです.最後に私の捕まえた授業表を貼ります.ログインが成功したら、他の操作を真似してもいいです.例えば、成績を調べるなら、原理は大体同じです.それから私も初心者です.間違ったところは教えてください.すべてのソースを見たいのですが、コメントエリアでお願いします...このままでいいです.