2012年10月18日 星期四

php.ini session.auto_start 預設啟動之處理

.

先針對,簡易防治註冊機器人 及 驗證問答 - 12位英數圖片 這2個discuz插件做處理說明。

1.請主機商,將 php.ini 內的 session.auto_start 設為0,不要預設啟動

2.如果主機商不能改,則可使用 .htaccess 方式處理

先看看論壇根目錄下有沒有 .htaccess 文件,如果有則下載此文件後,在第一行加入,如下代碼:


php_value session.auto_start 0


如果沒 .htaccess 文件,則自已創一個,並在第一行加入上述代碼。

ok後,上傳至論壇根目錄下覆蓋即可。

.

一般用個判斷式檢查一下 $_SESSION 是否已經被設置,真則被設置,就不跑session_start如下這樣處理即可。


if(!isset($_SESSION)){ session_start(); }


但 Discuz X 系列,走向物件方式,都改成class來調用各類所需用的東西,

這裡會出現層級問題,就是 session 預設啟用,那麼就只能在基層使用,class層不能使用,應該是安全性考量才這樣設計,

簡易防治註冊機 及 12位英數圖片 都是class層,如果session預設啟用,在class執行session_start則會報重覆執行的警告,

而且也不能使用 $_SESSION 。

但是 session 預設關閉,在class層執行session_start則ok,$_SESSION 也可正常使用

.

session預設開啟,每執行一個網頁就跑一回,而 discuz 它本身是跑它自已的 sion ,就是sid,

這樣差不多等於每執行一個頁面,就跑2次 session,沒什麼效率也浪費資源,還有層級問題,

不如交給 php程式 來判斷是否需要啟用。

php.ini 中 session.auto_start = 0 建議設0關閉預設啟用。

.

沒有留言:

張貼留言

留言後,需等待,站長的查看,才會公開;請勿重複留言,謝謝。