哪种登录方式更适合营销策略?

摘要:注:本文使用的代码基于PHP,其他语言逻辑同理。 一:使用COOKIE实现登录验证 使用cookie实现登录的方式,主要通过一些单向的加密信息进行验证。比如admin用户登录了之后,服务端生成一个cookie值:admin_15330060
注:本文使用的代码基于PHP,其他语言逻辑同理。 一:使用COOKIE实现登录验证 使用cookie实现登录的方式,主要通过一些单向的加密信息进行验证。比如admin用户登录了之后,服务端生成一个cookie值:admin_1533006028_ bbf2c2b1ec5cfb62d0a30438d8d0305c ,这个cookie值包含用户名,cookie到期时间和一个信息签名。签名的信息为 ”用户名_用户密码_cookie到期时间_盐” 比如:md5(”admin_1533006028_123456_salt123”)。这样用户每次访问,只要获取到这个cookie值,然后验证cookie到期时间和签名。就可以判断该用户是否已登录。 首先看看下面cookie登录的实例代码: <?php class Login { //登录 public function login($account,$password) { $lifetime = time()+3600; $model = new Model(); $pwd = md5($password); $userInfo = $model->db->getOne(array(‘username’=>$username,’password’=>$pwd); if($userInfo){ $cookie =$this->user2cookie($userInfo, $lifetime); setcookie('account', $cookie, $lifetime); return true; }else{ return false; } } //验证登录 public static function isLogin() { $cookie = $_COOKIE['account']; $re = $this->cookie2user($cookie); return $re; } //根据cookie判断一个用户是否合法的登录用户 public function cookie2user($cookie) { if(empty($cookie)) return false; list($username,$lifetime,$token) = explode('_',$cookie); //cookie过期或者cookie1分钟内过期 if($lifetime < (time()+60)) return false; $model = new Model(); //获取缓存中的用户信息 $userInfo = $model->redis->get($username); if(!$userInfo){ $userInfo = $model->db->getOne(array(‘username’=>$username)); }else{ $userInfo = parse_url($userInfo); } if(!$userInfo){ return false; } //验证token值 $str = $username.$userInfo['password'].$lifetime.$userInfo[‘salt’]; if($token !== md5($str)) return false; $val = http_build_query($userInfo , '' , '&'); //将用户信息设置到缓存中,键值生命周期为1小时。
阅读全文