2012-07-05 37 views
1

我在我的網站有很多發生session_start();。由於包含的某些文件也在AJAX中調用,因此需要在這種情況下啓動會話。當會話已經開始時會不會使用`session_start()`會導致任何問題?

當我編寫站點時,我並不在意從一開始就啓動它,因爲我知道我的服務器在會話已經開始時簡單地忽略了它。

這樣做有什麼問題嗎?如果在再次調用會話之前開始會話,我應該事先檢查嗎?

回答

1

這樣做有什麼問題嗎?

這將導致一個E_NOTICE,但是比第二等(第三,第四,...)調用session_start沒有影響。

但是,如果您已經開始會話,您「不知道」,我個人認爲它是代碼味道。如果可能的話,嘗試設計代碼,以確定會話是否已經啓動。

而且,詹姆斯指出,在手冊中的註釋:

爲了避免因爲4.3.3 PHP COMMITED當您啓動一個會話兩次通知,檢查session_id()第一:

if (session_id() == "") 
    session_start(); 
+0

它正確的aioobe建議。只需將整個php會話事件包裝在一個不錯的類中,它將自動檢查並根據需要初始化會話。如果做得對,你甚至可以使用相同的界面進行數據庫,文件或std php會話。 – burzum

相關問題