discuz cookie有效期修改
发布:smiling 来源: PHP粉丝网 添加日期:2015-09-30 11:01:17 浏览: 评论:0
discuz修改cookie的有效期使其延长或缩短,迎合我们主网站的cookie有效期的方法如下.
从网上搜索发现有写人写的根本找不到文件,因为版本的问题,好多文件都被整合了,下面我们以discuz X3最新版本为例:
根据cookie设定,我发不难猜想cookie设定,必须有cookie(..........)这个方法,因为phpcookie设定必须有php自带的cookie方法才行,呢我们去搜索discuz的cookie在哪里。
搜索后我们发现cookie()这个方法太多,我们去看看用dw站点搜索看看有多少吧:
找到 468 项(在4708文档)
我们发现有468个其中包含我自己定义cookie在内,还是比较多。咋办呢。。。。。。
在以前的我的关于discuz的博客中,提及到yii于discuz整合登陆的操作,其中我们发现cookie设定的方法是discuz自带的dsetcookie()这个方法。呢么我们找到这个方法所在的位置:
这里给出具体路径:source/function/function_core.php文件中,然后找到这cookie的方法:
- function dsetcookie($var, $value = '', $life = 0, $prefix = 1, $httponly = false) {
- global $_G;
- $config = $_G['config']['cookie'];
- $_G['cookie'][$var] = $value;
- $var = ($prefix ? $config['cookiepre'] : '').$var;
- $_COOKIE[$var] = $value;
- if($value == '' || $life < 0) {
- $value = '';
- $life = -1;
- }
- if(defined('IN_MOBILE')) {
- $httponly = false;
- }
- //如果在有效期内,登陆时间+有效期时间=$lift
- $life = $life > 0 ? getglobal('timestamp') + $life : ($life < 0 ? getglobal('timestamp') - 31536000 : 0);
- $path = $httponly && PHP_VERSION < '5.2.0' ? $config['cookiepath'].'; HttpOnly' : $config['cookiepath']; //phpfensi.com
- $secure = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
- if(PHP_VERSION < '5.2.0') {
- setcookie($var, $value, $life, $path, $config['cookiedomain'], $secure);
- } else {
- setcookie($var, $value, $life, $path, $config['cookiedomain'], $secure, $httponly);
- }
- }
我们主要去看看上面方法中红色标记的代码:
解释下:判定$life(cookie有效期)是否大于0,表示调用这个方法的时候传了cookie有效期这个参数,我们不管他,当传入cookie有效期的时候,调用了getglobal()方法,这个方法是获取当前的时间戳(秒),然后加上传入的有效期设定。如果没有传有效期,就是后面的$life<0的操作了,我们不管他,和我们没有关系。
然后我们发现getglobal()+$life。看到么他是当前时间戳加上设定的cookie有效期,这里,我们直接将这个$life修改成我们自己想要的有效期即可。
将上面的红色代码修改成下面代码即可:
- $cookie_life = 60*60;//有效期一小时。随便你怎么改,改动这个数据值就可以了。
- $life = $life > 0 ? getglobal('timestamp') + $cookie_life : ($life < 0 ? getglobal('timestamp') - 31536000 : 0);
顺便说一下,discuz X3版本的cookie有效期默认是24小时,也就是1天的时间。如果你不想修改cookie的有效期,修改我们自己的主网站的有效期也可以,设定成24小时就可以了,但是一般情况,我们的有效期一般设定在6小时或8小时最好。不过我喜欢设成6小时,因为,为了安全性,一般一个用户登录网站的时候不会时间太长,比如12小时,很少有用户在这个网站停留12小时的时间,而6小时为最好,不长,不短。太长容易泄密,而太短容易过期。所以一般用户登录完成后,下次再进入这个页面的时候最好去登陆一下,保证用户的安全性.
Tags: discuz有效期 cookie有效期
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)