网上之前有代码,最开始的时候,也是能用的,不过后来一个系统登录的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('登陆成功,点击开始发布内容');
}
else
{
exit('登录失败');
}
}
else
{
exit('登陆失败,'.$snoopy->error);
}
下次再使用cookie读出来,反序列化即可
$cookies=unserialize(file_get_contents('./tmp.tmp'));
$snoopy->cookies=$cookies;
------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------