搜索
系统检测到您的用户名不符合规范:

TP3.2.3使用session时遇到的困惑,谁能帮忙解答一下

浏览:4773 发布日期:2017年01月10日 分类:求助交流 关键字: 两周内自动登录
遇到的问题:我的环境是TP3.2.3,做了个两周内自动登录的功能,但用过一段时间后,发现打开网站时,登录着别人的账号,有时别人打开网站,登录着我的账号,貌似感觉是缓存数据串号了一样,按理说缓存都是保存在每个人的电脑上,怎么感觉像是在服务器端共享了这个缓存一样。
大侠帮忙看一下问题出在哪里?

---登录时记住密码:
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('/');
}

//...
}
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
vsiryxm
积分:1679 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /