用 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 才是開發者的王道。
Leave a Reply