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關閉預設啟用


Thank you for reading

沒有留言:

張貼留言

由於經常被灌水,所以您再發表留言之後,需要耐心的等待博客主之審核,於審核過後才會公開您的留言,因此請您不要重複的留言,謝謝您的留言。
Hello my friend, I have no money, I am very poor, My blog is super chill, I welcome your comments, but in order to maintain a healthy discussion, please avoid spam or irrelevant comments.