


Am Beispiel des Zhengfang Academic Affairs System simulieren Sie mit PHP die Anmeldung, um Stundenpläne und leere Klassenzimmer zu erfassen.
Die beiden Anwendungen „Course Grid“ und „Super Course Timetable“ müssen den Studierenden bekannt sein. Mit Ihrem Studentenausweis und dem Passwort des Bildungssystems können Sie Ihren eigenen Stundenplan importieren und ihn jederzeit und überall auf Ihrem Mobiltelefon anzeigen.
Tatsächlich können wir, wenn wir ein wenig über PHP wissen, auch eine ähnliche Webanwendung erstellen.
1. Lösen Sie den Bestätigungscode
Eigentlich ist dies ein kleiner Fehler von Zhengfang. Wenn wir die Anmeldeschnittstelle aufrufen, fordert der Browser den Server an und der Server generiert ein Bestätigungscode-Bild . Wenn wir dieses Bild nicht anfordern, generiert der Hintergrund von Zhengfang nicht den entsprechenden Bestätigungscode, sodass wir die Möglichkeit haben, dies zu nutzen, was mich für eine Weile glücklich machen wird ~ Zu diesem Zeitpunkt, ohne den Bestätigungscode einzugeben , Kann sehr reibungslos eintreten. Sie können den Zugriff auf die Adresse des Bestätigungscodes auf Ihrem Computer deaktivieren und dann versuchen, festzustellen, ob er wahr ist. Dies funktioniert natürlich nur für die positive Partei.
2. PHPs simuliertes Curl-Login
Hier ist eine Erklärung von Script House zu Curl http://www.jb51.net/article/51299.htm
Als Nächstes kommt das Ich glaube, dass es vielen Leuten wie mir geht, die sich nur gerne Beispiele ansehen und sich von langen Erklärungen abwenden ... Aber diese Angewohnheit ist immer noch nicht gut ... Kein Unsinn mehr!
//模拟登陆 function curl_request($url,$post='',$cookie='', $returnCookie=0){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_AUTOREFERER, 1); curl_setopt($curl, CURLOPT_REFERER, "这里一定要换成教务系统登陆的url"); //填写教务系统url if($post) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post)); } if($cookie) { curl_setopt($curl, CURLOPT_COOKIE, $cookie); } curl_setopt($curl, CURLOPT_HEADER, $returnCookie); curl_setopt($curl, CURLOPT_TIMEOUT, 20); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); if (curl_errno($curl)) { return curl_error($curl); } curl_close($curl); if($returnCookie){ list($header, $body) = explode("\r\n\r\n", $data, 2); preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches); $info['cookie'] = substr($matches[1][0], 1); $info['content'] = $body; return $info; }else{ return $data; } }
3. Versteckte Felder auf der Anmeldeseite des Bildungsverwaltungssystems
Nehmen Sie eine Kastanie
<input type="hidden" name="__VIEWSTATE" value="dDwyODE2NTM0OTg7Oz61eIbnKVojBioGYtg2vsy2SklwiA==">
Diese Dinge müssen Sie auch beim Anmelden mitbringen. Übrigens habe ich die Funktion gepostet und die Schule des Bloggers enthüllt ... Royal Farming University (hauptsächlich die Verwendung regulärer Ausdrücke)
<br> //登陆页面的隐藏字段<br> function getView(){ $url = 'http://jw.hzau.edu.cn/default2.aspx'; $result = curl_request($url); $pattern = '/<input type="hidden" name="__VIEWSTATE" value="(.*?)" \/>/is'; preg_match_all($pattern, $result, $matches); $res[0] = $matches[1][0]; return $res[0] ; }
//Den versteckten Wert der Klassenzimmer-Abfrageseite zurückgeben
private function getViewJs($cookie,$xh){
$url = "http://jw.hzau.edu.cn/xxjsjy.aspx ?xh={$ xh}";
$result = curl_request($url,'',$cookie);
$pattern = '//is';
preg_match_all($pattern, $result, $matches);
$res[0] = $matches[1][0];
return $res[0 ] ;
}
4. Cookies abrufen
function login($xh,$pwd){ $url = 'http://jw.hzau.edu.cn/default2.aspx'; $post['__VIEWSTATE'] = $this->getView(); $post['txtUserName'] = $xh; //填写学号 $post['TextBox2'] = $pwd; //填写密码 $post['txtSecretCode'] = ''; $post['lbLanguage'] = ''; $post['hidPdrs'] = ''; $post['hidsc'] = ''; $post['RadioButtonList1'] = iconv('utf-8', 'gb2312', '学生'); $post['Button1'] = iconv('utf-8', 'gb2312', '登录'); $result = curl_request($url,$post,'', 1); return $result['cookie']; }
5. Probieren wir die Funktion zur Überprüfung des Stundenplans aus , das Format ist etwas chaotisch Nun, lasst uns damit zufrieden sein, ich habe den Stundenplan in ein zweidimensionales assoziatives Array konvertiert
//返回课表字符串 private function classresult($xh,$pwd){ date_default_timezone_set("PRC"); //时区设置 $classList = "";//声明课表变量 $cookie = $this->login($xh,$pwd); $view = $this->getViewJs($cookie,$xh);//验证密码是否正确 //如果密码正确 if (!empty($view)) { $url = "http://jw.hzau.edu.cn/xskbcx.aspx?xh={$xh}"; $result = curl_request($url,'',$cookie); //保存的cookies preg_match_all('/<table[\w\W]*?>([\w\W]*?)<\/table>/',$result,$out); $table = $out[0][0]; //获取整个课表 preg_match_all('/<td [\w\W]*?>([\w\W]*?)<\/td>/',$table,$out); $td = $out[1]; $length = count($td); //获得课程列表 for ($i=0; $i < $length; $i++) { $td[$i] = str_replace("<br>", "", $td[$i]); $reg = "/{(.*)}/"; if (!preg_match_all($reg, $td[$i], $matches)) { unset($td[$i]); } } $td = array_values($td); //将课程列表数组重新索引 $tdLength = count($td); for ($i=0; $i < $tdLength; $i++) { $td[$i] = iconv('GB2312','UTF-8',$td[$i]); } //将课表转换成数组形式 function converttoTable($table){ $list = array( 'sun' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'mon' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'tues' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'wed' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'thur' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'fri' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ), 'sat' => array( '1,2' => '', '3,4' => '', '5,6' => '', '7,8' => '', '9,10' => '' ) ); $week = array("sun"=>"周日","mon"=>"周一","tues"=>"周二","wed"=>"周三","thur"=>"周四","fri"=>"周五","sat"=>"周六"); $order = array('1,2','3,4','5,6','7,8','9,10'); foreach ($table as $key => $value) { $class = $value; foreach ($week as $key => $weekDay) { $pos = strpos($class,$weekDay); // echo $pos; if ($pos) { $weekArrayDay = $key; //获取list数组中的第一维key foreach ($order as $key => $orderClass) { $pos = strpos($class,$orderClass); if ($pos) { $weekArrayOrder = $orderClass; //获取该课程是第几节 break; } } break; } } $list[$weekArrayDay][$weekArrayOrder] = $class; } return $list; } //调用函数 return converttoTable($td); }else{ return 0; } }
6. Probieren Sie die Funktion zum Abfragen leer aus Wieder Klassenräume
//空教室查询结果 public function roomresult(){ $xh = ""; //设置学号 $pwd = ""; //学号对应的密码 $cookie = $this->login($xh,$pwd); $url = "http://jw.hzau.edu.cn/xs_main.aspx?xh={$xh}"; $result = curl_request($url,'',$cookie); //保存的cookies $url="http://jw.hzau.edu.cn/xxjsjy.aspx?xh={$xh}"; $post['Button2'] = iconv('utf-8', 'gb2312', '空教室查询'); $post['__EVENTARGUMENT']=''; $post['__EVENTTARGET']=''; $post['__VIEWSTATE'] = $this->getViewJs($cookie,$xh); $post['ddlDsz'] = iconv('utf-8', 'gb2312', '单'); $post['ddlSyXn'] = '2014-2015'; //学年 $post['ddlSyxq'] = '1'; $post['jslb'] = ''; $post['xiaoq'] = ''; $post['kssj']=$_GET['start']; //提交的开始查询时间 $post['sjd']=$_GET['class'];//提交的课程节次 $post['xn']='2014-2015';//所在学年 $post['xq']='2';//所在学期 $post['xqj']='6';//当天星期几 $post['dpDataGrid1:txtPageSize']=90;//每页显示条数 $result = curl_request($url,$post,$cookie,0); preg_match_all('/<span[^>]+>[^>]+span>/',$result,$out); $tip = iconv('gb2312', 'utf-8', $out[0][3]);//获取页面前部的提示内容 preg_match_all('/<table[\w\W]*?>([\w\W]*?)<\/table>/',$result,$out); $table = iconv('gb2312', 'utf-8', $out[0][0]); //获取查询列表 $this->load->view("classroom",array('tip'=>$tip,'table'=>$table)); }
Zusammenfassend lässt sich sagen, dass das Bildungssystem jeder Schule anders ist. Zu diesem Zeitpunkt können wir die Firebug-Paketerfassung des Firefox-Browsers verwenden, um zu sehen, was eingereicht wurde . Wenn es nicht gelingt, müssen Sie nachsehen, ob das, was Sie einreichen sollten, gepostet wurde. Wenn es immer noch nicht gelingt, können Sie mich unter imzhongshan@126.com kontaktieren.
Das ist Beeilen Sie sich und probieren Sie es aus!
Das Obige beschreibt, wie man das Zhengfang Educational Affairs System als Beispiel verwendet, um die Anmeldung zu simulieren, um Stundenpläne und leere Klassenzimmer mit PHP zu erfassen, einschließlich relevanter Inhalte. Ich hoffe, es wird für Freunde hilfreich sein, die an PHP-Tutorials interessiert sind.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

Um die Curl-Version unter Linux zu aktualisieren, können Sie die folgenden Schritte ausführen: Überprüfen Sie die aktuelle Curl-Version: Zunächst müssen Sie die im aktuellen System installierte Curl-Version ermitteln. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus: curl --version Dieser Befehl zeigt die aktuellen Informationen zur Curl-Version an. Verfügbare Curl-Version bestätigen: Bevor Sie Curl aktualisieren, müssen Sie die neueste verfügbare Version bestätigen. Sie können die offizielle Website von Curl (curl.haxx.se) oder verwandte Softwarequellen besuchen, um die neueste Version von Curl zu finden. Laden Sie den Curl-Quellcode herunter: Laden Sie mit Curl oder einem Browser die Quellcodedatei für die Curl-Version Ihrer Wahl herunter (normalerweise .tar.gz oder .tar.bz2).

Cookies werden normalerweise im Cookie-Ordner des Browsers gespeichert. Wenn Sie die Cookie-Datei direkt öffnen, wird möglicherweise ein verstümmelter oder unleserlicher Inhalt angezeigt. Verwenden Sie daher am besten die von Ihrem Browser bereitgestellte Cookie-Verwaltungsoberfläche zum Anzeigen und Verwalten von Cookies.

Cookies auf Ihrem Computer werden je nach verwendetem Browser und Betriebssystem an bestimmten Orten in Ihrem Browser gespeichert: 1. Google Chrome, gespeichert unter C:\Benutzer\IhrBenutzername\AppData\Local\Google\Chrome\User Data\Default \Cookies usw.

Wie gehe ich mit der 301-Umleitung von Webseiten in PHPCurl um? Wenn Sie PHPCurl zum Senden von Netzwerkanfragen verwenden, werden Sie häufig auf den von der Webseite zurückgegebenen Statuscode 301 stoßen, der darauf hinweist, dass die Seite dauerhaft umgeleitet wurde. Um diese Situation richtig zu handhaben, müssen wir der Curl-Anfrage einige spezifische Optionen und Verarbeitungslogik hinzufügen. Im Folgenden wird detailliert beschrieben, wie mit der 301-Umleitung von Webseiten in PHPCurl umgegangen wird, und es werden spezifische Codebeispiele bereitgestellt. 301-Redirect-Verarbeitungsprinzip 301-Redirect bedeutet, dass der Server eine 30 zurückgibt

Cookies auf dem Mobiltelefon werden in der Browseranwendung des Mobilgeräts gespeichert: 1. Auf iOS-Geräten werden Cookies unter Einstellungen -> Safari -> Erweitert -> Website-Daten des Safari-Browsers gespeichert. 2. Auf Android-Geräten werden Cookies gespeichert in Einstellungen -> Site-Einstellungen -> Cookies des Chrome-Browsers usw.

Das Funktionsprinzip von Cookies besteht darin, dass der Server Cookies sendet, der Browser Cookies speichert und der Browser Cookies verarbeitet und speichert. Detaillierte Einführung: 1. Der Server sendet ein Cookie und der Server sendet einen HTTP-Antwortheader mit dem Cookie an den Browser. Dieses Cookie enthält einige Informationen, wie z. B. die Identitätsauthentifizierung des Benutzers, Präferenzen oder den Inhalt des Warenkorbs. Nachdem der Browser dieses Cookie erhalten hat, wird es auf dem Computer des Benutzers gespeichert. 2. Der Browser speichert Cookies usw.

Mit der Popularität des Internets ist die Verwendung von Browsern zum Surfen im Internet zu einer Lebensweise geworden. Bei der täglichen Verwendung von Browsern stoßen wir häufig auf Situationen, in denen wir Kontokennwörter eingeben müssen, z. B. beim Online-Shopping, bei sozialen Netzwerken, bei E-Mails usw. Diese Informationen müssen vom Browser aufgezeichnet werden, damit sie bei Ihrem nächsten Besuch nicht erneut eingegeben werden müssen. Was sind Cookies? Bei einem Cookie handelt es sich um eine kleine Datendatei, die vom Server an den Browser des Benutzers gesendet und lokal gespeichert wird. Sie enthält das Benutzerverhalten einiger Websites.
