因为七月底要面临小鲜肉们入学的此等好事,所以就打算给学院的官方公众微信平台加个用姓名查询学号、班级、课表之类的东西,每年手动输入的真的是挺累的,方便学弟学妹。其次呢,这个微信公众号代表代表着计算机学院,连微信都不能高大上一点,可怎么吸引学弟学妹们呢??于是乎,我就想可以先做出个样子,然后管辅导员要点经费,一台云主机+一个域名再加上一个人,就足够了。我真是个心机婊!!!!好吧,切入正题。
这次肯定还是借鉴了http://www.cnblogs.com/mchina/p/3332283.html这个系列的文章,大部分代码都是复制粘贴来的,不过有部分代码他的文章中有错误细致观察吧。至于封装成类?就算了吧,我懒。测试过一些简单的sql注入语句,可能是因为返回xml格式的数据,所以不存在表面的注入漏洞,不过求黑阔们不要当靶机T_T
这个功能的实现主要需要两个步骤,一是连接数据库,二是查询。
step1:数据库连接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?php function MysqlConnect() { $dbname = "wchat"; $host = "xx.xx.xx.xx"; $user = "username"; $pwd = "password"; $link = @mysql_connect($host,$user,$pwd,true); if(!$link) { die("Connect Server Failed: " . mysql_error()); } /*连接成功后立即调用mysql_select_db()选中需要连接的数据库*/ if(!mysql_select_db($dbname,$link)) { die("Select Database Failed: " . mysql_error($link)); } } ?>
|
step2:查询。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?php function Research($keyword) { $keyword = explode("+", $keyword); str_ireplace(array("'","\"","or","=","select","union"),"",$keyword); include("MysqlConnect.php"); MysqlConnect(); //检索数据 $select_sql = "select id,name,grade from test1 where name =\"$keyword[1]\""; mysql_query("set names utf8"); $select_res = mysql_query($select_sql) or die('SQL语句有错误,错误信息:'.mysql_error()); $rows = mysql_fetch_assoc($select_res); if($rows!='') { $contentStr = "学号:".$rows['id']."\t"."班级:".$rows['grade']."\t"."姓名:".$rows['name']."\t"; } else { $contentStr = "计算机学院没有该姓名的学生"; } return $contentStr; } ?>
|
step3:对index.php中的recievetext函数进行修改
1 2 3 4 5 6 7 8 9 10 11 12
| private function receiveText($object) { $funcFlag = 0; $keyword = trim($object->Content); if(strstr($keyword, "查询")) { include("Research.php"); $contentStr = Research($keyword); } $resultStr = $this->transmitText($object, $contentStr, $funcFlag); return $resultStr; }
|
最后不得不说我测试的时候面对这个乱码问题真是不知所措,男朋友给我改了好久!!!最后在上边那个网址文章的第5小结所有的函数开始加了句mysql_query(“set names utf8”);
乱码才正常了!
测试结果
使用excel导入
注:可能存在sql注入,可以再做一些更严谨的过滤。