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.