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

使用session和token的坑

浏览:3212 发布日期:2016年04月22日 分类:ThinkPHP5专区
1、如果在config文件里的session设置了 prefix ,那么当直接使用 $_SESSION的时候会出现找不到session的问题。因为此时的session文件是 $_SESSION['prefix']。
2、如果使用 session()函数调用或者赋值,不会出问题,会自动加上 prefix 。如果 $_SESSION混用,而且没有增加 prefix就会找不到 session。
3、3.23的 tokenbuild.php文件修改后如下: private function getToken(){
$tokenName = $this->config['token_name'];
$tokenType = $this->config['token_type'];

$session_Token = session($tokenName);
if (!isset($sess_Token)) {
$session_Token = [];
}
// 标识当前页面唯一性
$tokenKey = md5($_SERVER['REQUEST_URI']);
if (isset($session_Token[$tokenKey])) {
// 相同页面不重复生成session
$tokenValue = $session_Token[$tokenKey];
} else {
$tokenValue = is_callable($tokenType) ? $tokenType(microtime(true)) : md5(microtime(true));
//赋值
session($tokenName.'.'.$tokenKey,$tokenValue);
//$_SESSION[$tokenName][$tokenKey] = $tokenValue;
if (IS_AJAX && $this->config['token_reset']) {
header($tokenName . ': ' . $tokenKey . '_' . $tokenValue);
}
//ajax需要获得这个header并替换页面中meta中的token值
}
return [$tokenName, $tokenKey, $tokenValue];
}
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
ah0210
积分:2790 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

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

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