class LoginController extends FrontendController
{
/* 会员登录验证 */
public function check()
{
// ...
//登录成功后
$this->remember(); //两周内记住账号
// ...
}
/* 两周内记住账号 */
private function remember()
{
$remember_me = I('remember_me', null, 'int');
if (!$remember_me) {
return false;
}
$mobile = I('post.mobile', '', '/^1[34578]\d{9}$/');
$pwd = I('post.pwd', '');
if (empty($mobile) || empty($pwd)) {
return false;
}
$pwd = md5($pwd);
$account = $mobile . '|' . $pwd;
$account = encrypt($account, '', 1209600); //两周时间=60X60X24X14秒 加密存储
cookie('_RM', $account, array('expire' => 1209600, 'httponly'=>1)); //写入客户端缓存
}
//...
}---自动登录的代码:class FrontendController extends Controller
{
/* 两周内自动登录 */
public function _initialize()
{
if (!IS_LOGIN && $account = cookie('_RM')) {
$account = decrypt($account); //解密
list($mobile, $pwd) = explode('|', $account); //解析出用户名和密码
$user = D('User');
$id = $user->getUserField(array('mobile' => $mobile, 'pwd' => $pwd), 'id'); //判断是否存在这个用户
if (!is_null($id)) {
$user->autoLogin($id); //传入用户ID,实现自动登录
} else {
cookie('_RM', null); //记录密码的缓存名称
}
}
}
//....
}---其他:/* SESSION 和 COOKIE 配置 */
'SESSION_PREFIX' => 'home', //session前缀
'COOKIE_PREFIX' => 'home_', // Cookie前缀 避免冲突
/* 数据缓存 */
'DATA_CACHE_PREFIX' => 'vc_',Admin模块的配置:/* SESSION 和 COOKIE 前缀 */
'SESSION_PREFIX' => 'admin',
'COOKIE_PREFIX' => 'admin_',
/* 数据缓存 */
'DATA_CACHE_PREFIX' => 'vc_',用户登录时,session的处理:/* 写入session 并数字签名 */
$user_data = array(
'id' => $userid,
'mobile' => $mobile,
'last_time' => $last_time,
);
session('user', $user_data);退出时的操作:class UserController extends FrontendController {
//前台
public function logout()
{
session('user', null);
cookie('_RM', null); //清空 两周内自动登录 缓存
$this->redirect('/');
}
//...
}
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。