网上之前有代码,最开始的时候,也是能用的,不过后来一个系统登录的cookies有两个,是一个数组,于是网上的代码不能用了
下面贴上改造过的
登录Html页面
require './libs/Snoopy.class.php'; $snoopy=new Snoopy(); $snoopy->fetch("http://www.***.com/yanzhengma.php?do=seccode&i=".time()); preg_match('/iCMS_admincp_seccode=([^;]+);/', implode('',$snoopy->headers),$sessionid); $jsessionid=$sessionid[1]; $imgcode=base64_encode($snoopy->results); $smarty->assign('imgcode',$imgcode); $smarty->assign('jsessionid',$jsessionid); $smarty->display('zhaowozi_login.html');
这个页面主要负责显示登录框,便于用户录入信息。
下面是处理登录并保存cookie的页面
//登录验证 require './libs/Snoopy.class.php'; $snoopy=new Snoopy(); $submit['username']=$_POST['username']; $submit['password']=$_POST['password']; $submit['code']=$_POST['verify_code']; $snoopy->agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; MAXTHON 2.0)"; $add_url="http://www.zhaowozi.com/登录提交页面"; $referer="http://www.zhaowozi.com"; $snoopy->referer=$referer; $snoopy->cookies['iCMS_admincp_seccode']=$_POST['sessionid']; if ($snoopy->submit($add_url,$submit)) { //var_dump(json_decode($snoopy->results)); $res=json_decode($snoopy->results); if($res->code==true) { //登陆成功,获取发布页 //var_dump($snoopy->headers); //这个cookies是个数组 $snoopy->setcookies(); $cookies = $snoopy->cookies; $snoopy->fetch("http://www.zhaowozi.com/后台页面"); //var_dump($snoopy->results); $snoopy->setcookies(); $cookies = $snoopy->cookies; //cookies是数组,因此要序列化 file_put_contents('./tmp.tmp',serialize($cookies)); exit('登陆成功,<a href="zhaowozi.php?ac=fabu">点击开始发布内容</a>'); } else { exit('登录失败'); } } else { exit('登陆失败,'.$snoopy->error); }
下次再使用cookie读出来,反序列化即可
$cookies=unserialize(file_get_contents('./tmp.tmp')); $snoopy->cookies=$cookies;
------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------
转载请注明本文标题和链接:《php的模拟登录还是一直习惯snoopy,本文描述有验证码的cookies的保存》
发表评论