时间: 2020-12-3|tag: 24次围观|0 条评论

1.登录界面提交过来的数据进行cookie和session的设置,其中cookie设置加密确保安全性

  public function index(){
        if(IS_POST){
            $username=I('post.username');
            $pwd=I('post.pwd','','md5');       
            /*通过调用模型来获取查询结果,此处D方法为thinkphp内置,意为采取自定义的方式实例化模型 相当于 $User = new \Home\Model\AdminModel(); 当 \Home\Model\AdminModel 类不存在的时候,D函数会尝试实例化公共模块下面的 \Common\Model\AdminModel 类*/           
            $adminInfo = D('admin')->check($username,$pwd);

            if($adminInfo){
                //登录成功后使用cookie存储登录用户信息
                session('adminInfo',$adminInfo);

                //加密函数加密
                $lockInfo=addLock($adminInfo);
                cookie('adminInfo',$lockInfo,3600);
                $this->redirect('Index/index');
            }else{              
                cookie('isLogin',0);
                $this->error('用户名或者密码输入有误!','',1);
            }
        }else{          
            $this->display('login');
        }
    } 

2.加密函数如下:

    function addLock($arr){ 
      //数组进行序列化
      $str=serialize($arr);
      $key='$#**)UU*#';
      $newStr=md5($key.$str);
      return $newStr;
    }   

3.在公共控制器中初始化的过程中设置cookie和session的验证,如果没设置session或者提交的内容与浏览器存储的内容不符合的话就会提示登录失败:

    function __construct(){ 
        //加载父类的构造方法
        parent::__construct();

            $sessionInfo=session('adminInfo');

            $cookieInfo=cookie('adminInfo');

            //如果设置了session或者经过加密后的提交内容与cookie上次的设置值不相等的话就提示错误
            if(!$sessionInfo||$cookieInfo!=addLock($sessionInfo)){                
                //如果没有登录则1秒后跳转到登录页面
                $this->error('您还没登录,请先登录!',U('Login/index'),1);
            }
        }

原文链接:https://blog.csdn.net/living_ren/article/details/79039198

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《设置cookie和session的登录双重安全加密
   

还没有人抢沙发呢~