国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Discuz > 正文

discuz cookie有效期修改

2024-09-11 09:03:23
字體:
來源:轉載
供稿:網友

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的方法:

  1. function dsetcookie($var$value = ''$life = 0, $prefix = 1, $httponly = false) { 
  2.     
  3.     global $_G
  4.  
  5.     $config = $_G['config']['cookie']; 
  6.  
  7.     $_G['cookie'][$var] = $value
  8.     $var = ($prefix ? $config['cookiepre'] : '').$var
  9.     $_COOKIE[$var] = $value
  10.  
  11.     if($value == '' || $life < 0) { 
  12.         $value = ''
  13.         $life = -1; 
  14.     } 
  15.  
  16.     if(defined('IN_MOBILE')) { 
  17.         $httponly = false; 
  18.     } 
  19.     //如果在有效期內,登陸時間+有效期時間=$lift 
  20.     $life = $life > 0 ? getglobal('timestamp') + $life : ($life < 0 ? getglobal('timestamp') - 31536000 : 0); 
  21.     $path = $httponly && PHP_VERSION < '5.2.0' ? $config['cookiepath'].'; HttpOnly' : $config['cookiepath']; //Vevb.com 
  22.  
  23.     $secure = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0; 
  24.     if(PHP_VERSION < '5.2.0') { 
  25.         setcookie($var$value$life$path$config['cookiedomain'], $secure); 
  26.     } else { 
  27.         setcookie($var$value$life$path$config['cookiedomain'], $secure$httponly); 
  28.     } 

我們主要去看看上面方法中紅色標記的代碼:

解釋下:判定$life(cookie有效期)是否大于0,表示調用這個方法的時候傳了cookie有效期這個參數,我們不管他,當傳入cookie有效期的時候,調用了getglobal()方法,這個方法是獲取當前的時間戳(秒),然后加上傳入的有效期設定。如果沒有傳有效期,就是后面的$life<0的操作了,我們不管他,和我們沒有關系。

然后我們發現getglobal()+$life。看到么他是當前時間戳加上設定的cookie有效期,這里,我們直接將這個$life修改成我們自己想要的有效期即可。

將上面的紅色代碼修改成下面代碼即可:

  1. $cookie_life = 60*60;//有效期一小時。隨便你怎么改,改動這個數據值就可以了。 
  2. $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小時為最好,不長,不短。太長容易泄密,而太短容易過期。所以一般用戶登錄完成后,下次再進入這個頁面的時候最好去登陸一下,保證用戶的安全性.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴文县| 贵港市| 合作市| 黎川县| 襄樊市| 厦门市| 灵武市| 公安县| 吉木乃县| 缙云县| 石棉县| 石家庄市| 施甸县| 丹棱县| 错那县| 阳信县| 开阳县| 喜德县| 绩溪县| 兰溪市| 莱州市| 临安市| 靖远县| 长泰县| 尚义县| 文登市| 赫章县| 龙口市| 四会市| 兴化市| 永泰县| 响水县| 淮安市| 锦州市| 金门县| 吴旗县| 乌拉特中旗| 屏边| 新干县| 遵义市| 蓬安县|