标签 CET 下的文章

php写的cet成绩批量查询

php写的cet成绩批量查询

一直都关注cnbeta的动态,没想到20号的时候登录尽然有这条新闻:“2009年6月CET6成绩于今天2009年8月20号早上9点公布” ,cnbeta现在是嘛新闻都出啊。于是乎就拿出了俺的“证件夹”,掏出了准考证开始查成绩,我对这个网上cet查分的网站的认识和评价基本上和"另一个角度看CET查分"一文一样,这次6级得到437分,感觉还是差不多了,因为还重来没有认认真真的停下来背单词、作题,除了考四级的时候作了一张模拟卷。

php写的cet成绩批量查询

这个查询网站通过ajax来查询,需要等待15秒的时间,每次限查询一人成绩,听说08年的时候还要安装activex控件才能查询,对于linux用户就恼火了。通过分析一下http://cet.99sushe.com/这个页面发现没有表单(form),而是这样一句:

<input id="btn" type="button" name="" value="查询" onclick="submit_search();" /></p>

调用了一个js函数submit_search(); 网页引用了一个js文件:http://cet.99sushe.com/res/js/cet0908.js 。内容如下。

var testid = "";
var score = "";
var contenthtml = "";
var sec = 15;  //默认等待15秒钟
String.prototype.trim  =  function(){
return  this.replace(/(^\s*)|(\s*$)/g,  ""); //javascrip没有自带trim函数,用来消除空白符
}
function gid(id) {return document.getElementById(id);} //返回表单输入的准考证号的值
function assertFormat(tid){   //检查准考证号格式
    var reg = /^\d{1,}$/;  //regexp 表示全部为数字
    if (!reg.test(tid) || tid.length != 15 || tid.substr(6, 3) != "091" || get_testtype(tid) == "") { //第6位其的三位数不是091的不准查,意思就是只能查09年上半年的成绩,而后用curl发现根本就没有其他几次考试的数据
    alert("准考证号格式不正确");
    return false;
}
else {
    for (var i = 1; i <= 7; i++) {
        if (gid("t" + i).checked) {
            if (tid.substr(9, 1) != gid("t" + i).value) {
                alert("考试类型和准考证号不匹配");
                return false;
        }
    }
}
}
return true;
}
function submit_search() { //提交查询
    var testid_c = gid("id");
    var c = assertFormat(testid_c.value.trim());
    if(!c) {
        testid_c.focus();
        return;
}
testid = testid_c.value.trim();
if (contenthtml == "") contenthtml = gid("content").innerHTML; //得到content的div的innerHTML
//search(testid);
wait(); //等待15秒
}
function wait(){ //等待的时候把waithtml插入到content的div中
    var sec_all = sec;
    var waithtml = "
    <div id="score_result">
    <div id="score_inner">";
    waithtml += "
    <div id="wait_title">系统正在查询中请稍候</div>
    ";
    waithtml += "
    <div id="time">" + sec + "</div>
    ";
    waithtml += "</div>
    </div>
    ";
    gid("content").innerHTML = waithtml;
    setTimeout("search(" + testid + ")", 0);
    wait_time(sec_all);
}
function wait_time(waitsec){
    if (waitsec > 0) { //15秒没有到
        gid("time").innerHTML = waitsec;
        waitsec--;
        setTimeout("wait_time(" + waitsec + ")", 1000);   //难道这就是传说的中递归调用函数?!
}
    else{
        showscore(score); //时间到了也该显示分数得了
    }
}
function showscore(tscore){
var name = "";
var school = "";
var sarray=new Array();
if(tscore != ""){
    sarray = tscore.split(',');//根据不同的考试类型来给sarray数列赋值
if (sarray.length >= 7) {
    name = sarray[6];
    school = sarray[5];
}
else {
    name = sarray[2];
    school = sarray[1];
}
}
var resulthtml = "
<div id="score_result">
<h1>2009年6月考试成绩查询结果:</h1>
<div id="score_inner">";
resulthtml += " <dl> <dt class="dtleft">考生姓名:</dt> <dd class="ddright">"+name+"</dd>";
resulthtml += "
<dt class="dtleft">学校:</dt> <dd class="ddright">" + school + "</dd>";

resulthtml += "


<dt class="dtleft">考试类别:</dt> <dd class="ddright">";

resulthtml += get_testtype(testid);

resulthtml += "</dd> <dt></dt> <dd style="overflow: hidden; height: 0px; clear: both;"></dd>";

resulthtml += "


<dt class="dtleft">准考证号:</dt> <dd class="ddright">";

resulthtml += testid;

resulthtml += "</dd> </dl>

<ul>";

if(tscore == "") resulthtml += "<li>无法找到对应准考证号的分数,请确认你输入的准考证号无误</li>";

else {

if (sarray.length >= 7) {

resulthtml += "

<li>

<div class="lileft">您的成绩总分:</div>

<div class="liright" style="font-weight:bold;">" + sarray[4] + "</div></li>

";

resulthtml += "

<li>

<div class="lileft">听力:</div>

<div class="liright">" + sarray[0] + "</div></li>

";

resulthtml += "

<li>

<div class="lileft">阅读:</div>

<div class="liright">" + sarray1 + "</div></li>

";

resulthtml += "

<li>

<div class="lileft">综合:</div>

<div class="liright">" + sarray2 + "</div></li>

";

resulthtml += "

<li>

<div class="lileft">写作:</div>

<div class="liright">" + sarray[3] + "</div></li>

";

}

else {

resulthtml += "

<li>

<div class="lileft">您的成绩总分:</div>

<div class="liright" style="font-weight:bold;">" + sarray[0] + "</div></li>

";

}

}

resulthtml += "</ul>

<div style="text-align:center;">姓名中的生僻字可能无法正常显示,以成绩单为准</div>

</div>

";

resulthtml += "

<p class="lang" style="margin-top:-10px;text-align:center;"><input id="btn" onclick="re_search();" type="button" value="返回" /></p>


";

resulthtml += "</div>

";

gid("content").innerHTML = resulthtml; //通过js写html到dom上,用IE,firefox默认的源代码查看工具都没有发现源代码的变化,但是firefox扩展firebug就能看到,看来还是firebug牛逼。

}

function re_search() { //清空数据

var testid = "";

var score = "";

gid("content").innerHTML = contenthtml;

}


function get_testtype(tid) { //根据考号得到考试类型

switch (tid.substr(9, 1)) {

case "1": return "英语四级";

case "2": return "英语六级";

case "3": return "日语四级";

case "4": return "日语六级";

case "5": return "德语四级";

case "7": return "俄语四级";

case "9": return "法语四级";

default: return "";

}

}

function search(tid){ //通过ajax post数据"id="+xxxxxxxxxxxxxxx

var ajax = new Ajax();

ajax.Post("/getscore.html", "id="+tid, search_callback); //这个就是关键,通过post发送数据到getscore.html来完成查询。

}

function search_callback(success, responsetext) {

if (success) {

score = responsetext;

//showscore(score);

}

else {

search(testid);

}

}

总结起来就是向getscore.html post一个数据"id="+xxxxxxxxxxxx

可以通过curl向指定的服务器发送数据包,具体方法此文 “斗智斗勇续 四六级查分技巧” 有介绍,需要注意的一点是查询的服务器有referer验证,referer验证一般用来防盗链,防止数据从非本站的提交上去,不过自定义referer并不是什么好难的事情,此为的作者还做了一个c#的gui前端,基本上就是把cmd的输出放在gui界面上,没有多大的意义。这个 “CET在线连续查分程序” 是别人用c#弄的一个在线查询,可以指定准考证号的起始号码和结束号码,就可以连续查询了。

然后我受到这样的启发,做了一个php版本的,演示地址:http://tunpishuang.iamspace.com/cet.php , 和c#那个略有不同的是并不是指定起始和结束地址,而是直接输入前6位,最多输出6000人的成绩,我贴一下源代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>2009年上半年CET院校成绩批量查询 by tunpishuang</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
#description{
    border:solid 4px 4px 10px 4px #828282;
    color:#8B0000;
    width:420px;
}
#form{
    border:solid 4px #828282;
    color:#8B0000;
    width:520px;
}
</style>
</head>
<body>
<h1>2009年上半年CET院校成绩批量查询 by tunpishuang</h1>
<div id="description">
A.前6位是地区号.(可以问与你同一城市报名的任何一人)<br />
B.然后是071 (表示07年的第1次,即07年6月份的)<br />
C.然后是1或2 (1代表四级,2代表6级)<br />
D.然后的三位是你的考场号,多为0**或1**<br />
E.最后两位是你的座位<br />
</div>
<form method="post" action="cet_query.php">
<div id="form">
单人成绩查询(输入准考证号)<input type="text" name="tid" id="tid" size="15" maxlength="15" /><input type="submit" value="查一查,更健康" /><p></p>
院校成绩查询(输入准考证号前六位)<input type="text" name="cid" id="cid" size="8" maxlength="6" /><input type="submit" value="查一查,更健康" />
</div>
</form>
<div>
<h1>这个查询程序草草完工,有待完善的地方,但是我不想弄了,弄老一天,人都矿鸟<p></p>
有空到我博客来耍哈,<a href="http://tunps.com">http://tunps.com</a></h1>
</div>
</body>
</html>

cet_query.php

<?php
echo "
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<title>查询结果</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />
<style type=\"text/css\">
table,td,tr,th{
    border:solid 1px #1E90FF;
    text-align:center;
}
</style>
</head>
<body>
<table cellpadding=\"15\" cellspacing=\"0\" >
<tr>
    <th>听力</th>
    <th>阅读</th>
    <th>综合</th>
    <th>写作</th>
    <th>总分</th>
    <th>学校</th>
    <th>姓名</th>
</tr>
";
$data_fmt=array();

function query($id){

$curl = curl_init();

$curlpost='id='.$id;

curl_setopt($curl, CURLOPT_URL, 'http://cet.99sushe.com/getscore.html');

curl_setopt($curl, CURLOPT_REFERER, 'http://cet.99sushe.com');

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_POST,1);

curl_setopt($curl, CURLOPT_POSTFIELDS,$curlpost);

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,0);

$data = curl_exec($curl);

global $data_fmt;

$data_fmt=explode(",",$data);

echo "

<tr>

<td>$data_fmt[0]</td>

<td>$data_fmt1</td>

<td>$data_fmt2</td>

<td>$data_fmt[3]</td>

<td>$data_fmt[4]</td>

<td>$data_fmt[5]</td>

<td>$data_fmt[6]</td>

</tr>"

;

curl_close($curl);

}


function person_query($tid){

query($tid);


}

function college_query($cid)

{    $cid=$_POST['cid'];

$cid=sprintf("%.0f",$cid."091200100");

$j=0;

$k=0;

while($k<2){

while($j<100){

for($i=0;$i<30;$i++)

{    $cid=sprintf("%.0f",$cid+1);

query($cid);

}

$cid=$cid-30;

$cid=$cid+100;

$j++;

}

$cid=$_POST['cid'];

$cid=sprintf("%.0f",$cid."091200100");

$j=0;

$k++;


}

}

if(($_POST['tid'])!=0){

$tid=$_POST['tid'];

person_query($tid);

}

if(($_POST['cid'])!=0){

$cid=$_POST['cid'];

college_query($_POST['cid']);

}

echo "</table>

</body>

</html>";

?>

<!--

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>查询结果</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<style type="text/css">

table,td,tr,th{

border:solid 1px #1E90FF;

text-align:center;

}

</style>

</head>

<body>

<table cellpadding="15" cellspacing="0" >

<tr>

<th>听力</th>

<th>阅读</th>

<th>综合</th>

<th>写作</th>

<th>总分</th>

<th>学校</th>

<th>姓名</th>

</tr>


<tr>

<td><?php echo $data_fmt[0]?></td>

<td><?php echo $data_fmt1?></td>

<td><?php echo $data_fmt2?></td>

<td><?php echo $data_fmt[3]?></td>

<td><?php echo $data_fmt[4]?></td>

<td><?php echo $data_fmt[5]?></td>

<td><?php echo $data_fmt[6]?></td>

</tr>

</table>

</body>

</html>

王长喜2008年四级英语预测试卷(标准测试版—第十二版)四级听力MP3下载

cet4

因为俺是小专科的缘故,学校规定专科必选先考三级才能报考四级。有种歧视的感觉。你要问我三级是虾米东东,我觉得应该是市教委赚外快的又一手段罢了。

MD,凭啥专科不可以直接考四级?高考成绩低就说明英语单科就不行了吗?啥子垃圾逻辑!Bullshit!

08年下半年,我们赶上了CET考试,终于可以考CET了,听说08.12.20就要开始了,作了王长喜的两张模拟卷,感觉难度一般,我很有信心。我穷,卷子是我同学买的,他没有作,我帮他解决了,哈哈。不过光盘被他磨花了,不过不要怕,俺们Google出了一点下载地址,直接下不行的用迅雷。

顺便鄙视一下沪江的购买ftp资源的制度。

第一个:

王长喜英语四级预测试卷(第12版听力)_Model_Test_01

王长喜英语四级预测试卷(第12版听力)_Model_Test_02

王长喜英语四级预测试卷(第12版听力)_Model_Test_03

王长喜英语四级预测试卷(第12版听力)_Model_Test_04

王长喜英语四级预测试卷(第12版听力)_Model_Test_05

王长喜英语四级预测试卷(第12版听力)_Model_Test_06

王长喜英语四级预测试卷(第12版听力)_Model_Test_07

王长喜英语四级预测试卷(第12版听力)_Model_Test_08

王长喜英语四级预测试卷(第12版听力)_Model_Test_09

王长喜英语四级预测试卷(第12版听力)_Model_Test_10

;------------------

第二个:

http://www.way2english.com/English%20study%20all/way2englishcet4/4%E7%BA%A7%E9%A2%84%E6%B5%8B%E6%A0%87%E5%87%86%E7%89%88%E2%80%94Model%20Test%201.mp3【把红色的1改为1到10,用迅雷批量下载】