哪种登录方式更适合营销策略?
摘要:注:本文使用的代码基于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小时。
