Tag: session_start

Check if PHP session has already started

Posted by – January 16, 2014

用 PHP 寫系統基本上躲不掉 session 相關的一系列問題的。因為個人偏好 CodeIgniter,所以很多時候用 Session Library 或是開源的 Native Session Library 就可以避開一些煩瑣的麻煩。

不過很多時候碰到沒有使用 framework 當基礎,直接用 PHP 開發的專案時,程式碼裡 "充斥" 著 session_start() 也是非常普遍的事情,接著就會一直在 error_log 裡看到這樣的訊息:

PHP Notice:  A session had already been started

看了有夠礙眼,也讓人覺得很不專業。

其實這問題是可以避免的。只要在宣告前檢查是否啟動就好。

isset($_SESSION) or session_start();

如果使用的是 PHP 5.4 以上的版面,還有更可靠的寫法。

(session_status() !== PHP_SESSION_ACTIVE) or session_start();

乾乾淨淨的是 error_log 才是開發者的王道。