博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
如何理解汉诺塔
查看>>