Check if PHP session has already started
Recommended way for versions of PHP >= 5.4.0 , PHP 7
if (session_status() === PHP_SESSION_NONE) { session_start();}
Reference: http://www.php.net/manual/en/function.session-status.php
For versions of PHP < 5.4.0
if(session_id() == '') { session_start();}
For versions of PHP prior to PHP 5.4.0:
if(session_id() == '') { // session isn't started}
Though, IMHO, you should really think about refactoring your session management code if you don't know whether or not a session is started...
That said, my opinion is subjective, and there are situations (examples of which are described in the comments below) where it may not be possible to know if the session is started.
PHP 5.4 introduced session_status(), which is more reliable than relying on session_id()
.
Consider the following snippet:
session_id('test');var_export(session_id() != ''); // true, but session is still not started!var_export(session_status() == PHP_SESSION_ACTIVE); // false
So, to check whether a session is started, the recommended way in PHP 5.4 is now:
session_status() == PHP_SESSION_ACTIVE