博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟登录学校教务管理系统,获取成绩单!
阅读量:5093 次
发布时间:2019-06-13

本文共 2715 字,大约阅读时间需要 9 分钟。

界面如下:

这个模拟是高仿真学校教务系统的,好处就是,可以快速登陆系统直接获取成绩。

避开了繁琐的查询步骤,和节约了查询的时间,极大的提高了用户的体验。

核心源代码如下:

login(); if ( false == $flag) exit('学号或密码错误!'); echo $get->getResults(); }class Index{ private $_cookie; //验证登录操作 public function login(){ $url = 'http://202.197.224.134:8083/jwgl/logincheck.jsp'; $post = 'identity=student&username='.$_REQUEST['xh'].'&password='.$_REQUEST['psw']; $stream = $this->_html($url, $post); //将$strean由gbk编码转换为utf-8编码 $stream = mb_convert_encoding($stream, 'utf-8', 'gbk'); $this->_cookie($stream); // 获取cookie $url = 'http://202.197.224.134:8083/jwgl/index1.jsp'; $html = $this->_html($url, $post.'&role=1'); return strpos($stream, '页面跳转') !== false; } //查询成绩的方法 public function getResults(){ $url= 'http://202.197.224.134:8083/jwgl/cj/cj1_cjLiebiao.jsp?xq=null&xkjc='.$_REQUEST['xkjc'].'&type=null&xkdl2=1&xh='.$_REQUEST['xh'].'&bh=null'; $stream = $this->_html($url); $stream = mb_convert_encoding($stream, 'utf-8', 'gbk'); //搜索 $stream中所有匹配 '/(.*?)<\/td>/is' 给定正则表达式 的匹配结果并且将它们以 flag 指定顺序输出到 $match 中. preg_match_all('/(.*?)<\/td>/is', $stream, $match); $len=count($match[1],1); echo "
"; $j=0; for($i=1;$i<=($len+1)/7;$i++){ echo "
"; for(;$j<=$len;$j++){ echo "
"; if(($j+1)%7==0){ $j=$j+1; break; } } echo "
"; } echo "
湘潭大学学号为<<".$_REQUEST['xh'].">>的成绩单
".$match[1][$j]."
"; } private function _cookie($stream){ preg_match_all("/Set-Cookie: (.*?);/is", $stream, $matches); $this->_cookie = @implode(";", $matches[1]); } private function _html($url, $post = FALSE){ ob_start(); //初始化curl模块 $ch = curl_init($url); //是否显示头信息 curl_setopt($ch, CURLOPT_HEADER, true); //设置cURL允许执行的最长秒数 curl_setopt($ch, CURLOPT_TIMEOUT, 60); if ( $post){ //post方式提交 curl_setopt($ch, CURLOPT_POST, true); //要提交的信息 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } //设置cookie信息,保存在指定的文件中 curl_setopt($ch, CURLOPT_COOKIE, $this->_cookie); //执行curl curl_exec($ch); //执行cURL抓取页面内容 //关闭cURL资源,并且释放系统资源 curl_close($ch); //此函数返回输出缓冲区的内容 $_str = ob_get_contents(); //去除所有输出缓冲区 ob_end_clean(); return $_str; }} echo "";?>

 

转载于:https://www.cnblogs.com/yxhblogs/p/4749184.html

你可能感兴趣的文章
构造函数的继承
查看>>
Nginx的虚拟主机配置
查看>>
overflow 属性
查看>>
Java中多态的一些简单理解
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>
JZOJ 3.10 1539——三条直线
查看>>
[最小割][Kruskal] Luogu P5039 最小生成树
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
Javascript的调试利器:Firebug使用详解
查看>>
(转)Android之发送短信的两种方式
查看>>
使用vue脚手架搭建项目
查看>>
Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
查看>>
网络爬虫初步:从一个入口链接开始不断抓取页面中的网址并入库
查看>>
iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
查看>>
python第九天课程:遇到了金角大王
查看>>
字符串处理
查看>>
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>
hdu 5402 Travelling Salesman Problem (技巧,未写完)
查看>>