用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

php如何保证Cookie自动登录的安全性?

2014-10-30 作者: java源代码大全举报

[php]代码库

class member
{
    var $ck='Dxe8SqIcmyUf';
    var $db;  //传入PDO对象
    var $mid; //会员ID
    
    public $scr; //cookie 安全码  $_COOKIE['scr']
    public $user;//cookie User   $_COOKIE['user']
    
    public $srpwd;//执行checkcookie后方可调用

    function __construct()
    {
        if(!empty($_COOKIE['scr']))
        {
            $this->scr = $_COOKIE['scr'];
        }
        if(!empty($_COOKIE['user']))
        {
            $this->user= $_COOKIE['user'];
        }   
    }

    
    /**
     * 检测cookie
     */
    public function checkcookie()
    {
        $uname = $this->user;
        $hash  = $this->scr;
        
        if(!empty($uname) && !empty($hash))
        {
            if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$uname) || preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$hash))
            {
                 $this->mid=0;
                 return false;
            }
            else{
                $sql = "select username,password from users where username='$uname'";
                $rs  = $this->db->query($sql);
                $row = $rs->fetch();
                $scr = $this->makescr($row['username'],$row['password']);
                
                if($hash == $scr)
                {
                    $this->srpwd=$row['password'];
                    return true;
                }
                else {
                    return false;
                }   
            }//cookie安全
        }else {
            return false;
        }//exit
    }//function checkcookie
    
   /**
    * putcookie
    *
    * 登陆成功后放置cookie,包含安全码
    *
    * @param String $uname
    * @param String $pwd
    * @param Int    $time
    */
    public function putcookie($uname,$pwd,$time = 604800)
    {
        try {
            $scrString = $this->makescr($uname,$pwd);
            
            if(!is_numeric($time))
            {
                $time = 604800;
            }
            
            setcookie('user',$uname,time()+$time,'/');
            setcookie('scr',$scrString,time()+$time,'/');
            
            return true;
        } catch (Exception $e) {
            return false;
        } 

    }//function putcookie
    
    /**
     * 生成安全码
     * 
     * @param String $u
     * @param String $p
     */
    public function makescr($u,$p)
    {
        return substr(md5($u.$p.$this->ck),3,20);
    }


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...