大侠帮忙看一下问题出在哪里?
---登录时记住密码:
FrontendController控制器为前台基础控制器
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); //记录密码的缓存名称
}
}
}
//....
}---其他:Home模块的配置
/* 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('/');
}
//...
} 最佳答案