服务器端密码是经过MD5加密的.
客户端cookie:
Base64编码(username+"|"+cookie有效期+"
|"+MD5(username+":"+password+":"+key)).
读取cookie:
Base64 解码cookie值:
获得username,判断cookie是否超时,如果过了有效期,删除此cookie,此时自动登录就失效了.
根据username查询数据库 如果 用户存在,将返回的
和之前从cookie获取的MD5(username+":"+password+":"+key))进行比对,如果一致,那么自动登录成功,否则就失败.
thinkphp后台检测用户登录超时的实现方法
在thinkphp的后台检测中,由于每个操作的地方都需要先判断一下登录是否超时,就想到用构造函数,但是每个类都写一个构造函数又不方便。
在thinkphp的后台检测中,由于每个操作的地方都需要先判断一下登录是否超时,就想到用构造函数,但是每个类都写一个构造函数又不方便。
所以写了一个公共类,这个公共类里面还可以写许多其他的通用方法,如: _initialize 方法
新建一个公共Action叫CommAction.class.php
复制代码代码如下:
<?php
class CommAction extends Action {
public function __construct() {
parent::__construct();
$this->checkAdminSession();
}
public function checkAdminSession() {
//设置超时为10分
$nowtime = time();
$s_time = $_SESSION['logintime'];
if (($nowtime - $s_time) > 600) {
unset($_SESSION['logintime']);
$this->error('当前用户未登录或登录超时,请重新登录', U('login/loginpage'));
} else {
$_SESSION['logintime'] = $nowtime;
}
}
}
?>
class CommAction extends Action {
}
?>
如果是面向过程的程序则写一个session.inc.php,把程序判断写在这个文件中,然后其他文件都包含即可。