discuz修改cookie的有效期使其延长或缩短,迎合我们主网站的cookie有效期的方法如下:
从网上搜索发现有写人写的根本找不到文件,因为版本的问题,好多文件都被整合了,下面我们以discuz X3最新版本为例:
根据cookie设定,我发不难猜想cookie设定,必须有cookie(..........)这个方法,因为phpcookie设定必须有php自带的cookie方法才行,呢我们去搜索discuz的cookie在哪里。
搜索后我们发现cookie()这个方法太多,我们去看看用dw站点搜索看看有多少吧:
我们发现有468个其中包含我自己定义cookie在内,还是比较多。咋办呢。。。。。。
在以前的我的关于discuz的博客中,提及到yii于discuz整合登陆的操作,其中我们发现cookie设定的方法是discuz自带的dsetcookie()这个方法。呢么我们找到这个方法所在的位置:
这里给出具体路径: source/function/function_core.php文件中
然后找到这cookie的方法:
function dsetcookie($var, $value = '', $life = 0, $prefix = 1, $httponly = false) {
}
我们主要去看看上面方法中红色标记的代码:
解释下:判定$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
还没有评论,来说两句吧...