0
votes

I am currently experiencing problems with the PHP function session_id.

At the beginning of my scripts, I want to check whether the user has a session and I do not want to call session_start() as that would generate a session cookie.

Whenever I call session_id, it returns '' , even if a session is definetely set. I verified that a session is set by checking for the session cookie via the $_COOKIE array.

3

3 Answers

3
votes

session_start() will not generate a new session. From the PHP docs:

session_start() creates a session or resumes the current one based on a session identifier passed via a GET or POST request, or passed via a cookie.

You have to resume the old session before you can get its ID.

0
votes

Without calling session_start() the session does not exist for PHP. After session_start() you can easily check whether the user has got a session with checking for a key in the $_SESSION super-global array.

0
votes

If you want to check if they have a session and get the session id without creating a new one if they don't your best bet is to look in the $_COOKIE array for the session id (or $_GET if you use that for storing the id instead).

session_id() will only work if you call session_start(). If the session does already exist it will not generate a new session id so it will still give you the session id you are looking for.