I have a PHP file that is sometimes called from a page that has started a session and sometimes from a page that doesn't have session started. Therefore when I have session_start()
on this script I sometimes get the error message for "session already started". For that I've put these lines:
if(!isset($_COOKIE["PHPSESSID"]))
{
session_start();
}
but this time I got this warning message:
Notice: Undefined variable: _SESSION
Is there a better way to check if session has already started?
If I use @session_start
will it make things work properly and just shut up the warnings?
This is what I use to determine if a session has started. By using empty and isset as follows:
You should reorganize your code so that you call
session_start()
exactly once per page execution.Based on my practice, before accessing the
$_SESSION[]
you need to callsession_start
every time to use the script. See the link below for manual.http://php.net/manual/en/function.session-start.php
For me at least
session_start
is confusing as a name. Asession_load
can be more clear.Use session_id(), it returns an empty string if not set. It's more reliable than checking the
$_COOKIE
.The only thing you need to do is: