模拟登录学校教务管理系统,获取成绩单!

界面如下:

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

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

核心源代码如下:

 <?php

    //屏蔽notice信息
    error_reporting(E_ALL ^ E_NOTICE);  

    //设置文本头信息
    header("Content-Type:text/html;charset=utf-8");

    if ( $_REQUEST['xh'] && $_REQUEST['psw']){    
        $get= new Index();
        $flag = $get->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>(.*?)<\/td>/is' 给定正则表达式 的匹配结果并且将它们以 flag 指定顺序输出到 $match 中. 
        preg_match_all('/<td>(.*?)<\/td>/is', $stream, $match);

         $len=count($match[1],1);


        echo "<table  align='center' width='80%' border='1' cellspacing='0'  bordercolor='#3399cc'  cellpadding='2'><tr style='color:#000000;font-size:15px' bgcolor='#3399cc'><td  colspan='8' align='center'>湘潭大学学号为<<<font color='red' style='font-weight:bold;'>".$_REQUEST['xh']."</font>>>的成绩单</td>";
        $j=0;
        for($i=1;$i<=($len+1)/7;$i++){
            
            echo "<tr>";
            for(;$j<=$len;$j++){    
                echo "<td>".$match[1][$j]."</td>";
                if(($j+1)%7==0){
                    $j=$j+1;
                    break;
                }
            }
            echo "</tr>";
        }
        echo "</table>";
    }
    
    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 "<a href='a.html' style='margin-left:45%;'><input type='button' value='返回查成绩首页'></a>";
?>

 

posted @ 2015-08-21 22:28  Yxh_blogs  阅读(2340)  评论(0编辑  收藏  举报