折雨的天空

博客介绍:本博客当前共有文章【968】篇,总阅读量【5,177,083】次,第一篇博客发表于【2011年04月06日 10时34分】,距今已【4990】天,感谢您的使用!

您的位置:折雨的天空 >php开发> php的模拟登录还是一直习惯snoopy,本文描述有验证码的cookies的保存

php的模拟登录还是一直习惯snoopy,本文描述有验证码的cookies的保存

网上之前有代码,最开始的时候,也是能用的,不过后来一个系统登录的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的保存

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换