Home Backend Development PHP Tutorial Taking the Zhengfang Academic Affairs System as an example, use PHP to simulate logging in to capture class schedules and empty classrooms.

Taking the Zhengfang Academic Affairs System as an example, use PHP to simulate logging in to capture class schedules and empty classrooms.

Aug 08, 2016 am 09:24 AM
cookie curl gt post

 Course Grid and Super Course Timetable are two applications that college students must be familiar with. Using your student ID and password for the educational system, you can import your own class timetable and view it on your mobile phone anytime, anywhere.

 In fact, if we know a little bit about php, we can also make a web application similar to this.

 1. Solve the verification code

    Actually this is a small bug of Zhengfang. When we enter the login interface, the browser will request the server, and the server will generate a verification code image. If we do not request this image, then the Zhengfang background will not generate the corresponding verification code, so we have an opportunity to take advantage of it, which will make me happy for a while ~ At this time, without filling in the verification code, Can enter very smoothly. You can disable access to the address of the verification code on your computer, and then try to see if this is true~ Of course, this only works for the positive party.

 2. PHP’s curl simulated login

  Here is a Script House’s explanation of curl http://www.jb51.net/article/51299.htm

  The following is the relevant code, I believe many people Like me, I only like to look at examples and turn away from lengthy explanations... But this habit is still bad... No more nonsense!

//模拟登陆
	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;
	        }
    }
Copy after login

 3. Hidden fields on the login page of the educational administration system

                                                                                 me me in in in in mine\ ...Royal Farming University (mainly the use of regular expressions)

    <input type="hidden" name="__VIEWSTATE" value="dDwyODE2NTM0OTg7Oz61eIbnKVojBioGYtg2vsy2SklwiA==">
Copy after login
   //Return the hidden value of the classroom query page

  private function getViewJs($cookie,$xh){

  $url = "http://jw. hzau.edu.cn/xxjsjy.aspx?xh={$xh}";

  $result = curl_request($url,'',$cookie);

  $pattern = '/<input type="hidden" name= "__VIEWSTATE" value="(.*?)" />/is';
   preg_match_all($pattern, $result, $matches);
   $res[0] = $matches[1][0];
   return $res[0] ;
  }


 4. Obtaining cookies

<br>  //登陆页面的隐藏字段<br>  function getView(){
	    $url = 'http://jw.hzau.edu.cn/default2.aspx';
	    $result = curl_request($url);
	    $pattern = '/&lt;input type="hidden" name="__VIEWSTATE" value="(.*?)" \/&gt;/is';
	    preg_match_all($pattern, $result, $matches);
	    $res[0] = $matches[1][0];
	         
	    return $res[0] ;
	}
Copy after login

 5. Let’s try the function of checking the class schedule. The format is a bit messy. Let’s make do with it. I converted the class schedule into a Two-dimensional associative array

function login($xh,$pwd){
	    $url = 'http://jw.hzau.edu.cn/default2.aspx';
	    $post['__VIEWSTATE'] = $this-&gt;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'];
	}
Copy after login

  6, try the function of querying empty classrooms again

//返回课表字符串
private function classresult($xh,$pwd){
    	date_default_timezone_set("PRC"); //时区设置
    	$classList = "";//声明课表变量

    	$cookie = $this-&gt;login($xh,$pwd);
    	$view = $this-&gt;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('/&lt;table[\w\W]*?&gt;([\w\W]*?)&lt;\/table&gt;/',$result,$out);
	        $table = $out[0][0]; //获取整个课表

	        preg_match_all('/&lt;td [\w\W]*?&gt;([\w\W]*?)&lt;\/td&gt;/',$table,$out);
	        $td = $out[1];
	        $length = count($td);

	    	//获得课程列表
	    	for ($i=0; $i &lt; $length; $i++) { 
	    		$td[$i] = str_replace("&lt;br&gt;", "", $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 &lt; $tdLength; $i++) { 
				$td[$i] = iconv('GB2312','UTF-8',$td[$i]);
			}

			//将课表转换成数组形式
			function converttoTable($table){
				$list = array(
					'sun' =&gt; array(
						'1,2' =&gt; '',
						'3,4' =&gt; '',
						'5,6' =&gt; '',
						'7,8' =&gt; '',
						'9,10' =&gt; ''
					),
					'mon' =&gt; array(
						'1,2' =&gt; '',
						'3,4' =&gt; '',
						'5,6' =&gt; '',
						'7,8' =&gt; '',
						'9,10' =&gt; ''
					),
					'tues' =&gt; array(
						'1,2' =&gt; '',
						'3,4' =&gt; '',
						'5,6' =&gt; '',
						'7,8' =&gt; '',
						'9,10' =&gt; ''
					),
					'wed' =&gt; array(
						'1,2' =&gt; '',
						'3,4' =&gt; '',
						'5,6' =&gt; '',
						'7,8' =&gt; '',
						'9,10' =&gt; ''
					),
					'thur' =&gt; array(
						'1,2' =&gt; '',
						'3,4' =&gt; '',
						'5,6' =&gt; '',
						'7,8' =&gt; '',
						'9,10' =&gt; ''
					),
					'fri' =&gt; array(
						'1,2' =&gt; '',
						'3,4' =&gt; '',
						'5,6' =&gt; '',
						'7,8' =&gt; '',
						'9,10' =&gt; ''
					),
					'sat' =&gt; array(
						'1,2' =&gt; '',
						'3,4' =&gt; '',
						'5,6' =&gt; '',
						'7,8' =&gt; '',
						'9,10' =&gt; ''
					)
				);
				$week = array("sun"=&gt;"周日","mon"=&gt;"周一","tues"=&gt;"周二","wed"=&gt;"周三","thur"=&gt;"周四","fri"=&gt;"周五","sat"=&gt;"周六");
				$order = array('1,2','3,4','5,6','7,8','9,10');
				foreach ($table as $key =&gt; $value) {
					$class = $value;
					foreach ($week as $key =&gt; $weekDay) {
						$pos = strpos($class,$weekDay);
						// echo $pos;
						if ($pos) {
							$weekArrayDay = $key; //获取list数组中的第一维key 
							foreach ($order as $key =&gt; $orderClass) {
								$pos = strpos($class,$orderClass);
								if ($pos) {
									$weekArrayOrder = $orderClass; //获取该课程是第几节
									break;
								}
							}
							break;
						}
					}
					$list[$weekArrayDay][$weekArrayOrder] = $class;
				}
				return $list;
			}
					
			//调用函数
			return converttoTable($td);
        }else{
        	return 0;
        }
	}
Copy after login

 That’s it in summary. Each school’s educational administration system is different. At this time we can use the Firefox browser Firebug captures the packet to see what was submitted. If it doesn’t succeed, you should check to see if the thing you should submit has been posted. If it still doesn’t succeed, uh... you can contact me at imzhongshan@126.com

That’s all, hurry up and give it a try!

The above describes how to use the Zhengfang Educational Affairs System as an example to simulate logging in to capture class schedules and empty classrooms using PHP, including relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are the differences between Huawei GT3 Pro and GT4? What are the differences between Huawei GT3 Pro and GT4? Dec 29, 2023 pm 02:27 PM

What are the differences between Huawei GT3 Pro and GT4?

Tutorial on updating curl version under Linux! Tutorial on updating curl version under Linux! Mar 07, 2024 am 08:30 AM

Tutorial on updating curl version under Linux!

Where are cookies stored? Where are cookies stored? Dec 20, 2023 pm 03:07 PM

Where are cookies stored?

Where are the cookies on your computer? Where are the cookies on your computer? Dec 22, 2023 pm 03:46 PM

Where are the cookies on your computer?

Where are the mobile cookies? Where are the mobile cookies? Dec 22, 2023 pm 03:40 PM

Where are the mobile cookies?

What are the dangers of cookie leakage? What are the dangers of cookie leakage? Sep 20, 2023 pm 05:53 PM

What are the dangers of cookie leakage?

Detailed explanation of where browser cookies are stored Detailed explanation of where browser cookies are stored Jan 19, 2024 am 09:15 AM

Detailed explanation of where browser cookies are stored

How cookies work How cookies work Sep 20, 2023 pm 05:57 PM

How cookies work

See all articles