How to get/set session_id() or should it be generated automatically?

php, session, unique

Solution

There are 2 ways to use sessions and session id's in PHP:

1 - Auto generate the session ID and get it:

session_start();
$id = session_id();

2 - Set the session ID manually and then start it:

session_id( 'mySessionId' );
session_start();

If you intend to set the session ID, you must set it before calling session_start(); If you intend to generate a random session_id (or continue one already started in a previous page request) and then get that id for use elsewhere, you must call `session_start()` before attempting to use `session_id()` to retrieve the session ID.

Problem

I have some basic session handling in my application. In each page I check if the user is logged in. If they are then they're already identified by `$_SESSION['user_id']`, and their login/logout is recorded in a MySQL table. I would also like to record visits by guests (not logged in) based on a unique id. I had assumed that once `session_start()` is called that an internal `session_id` is automatically generated and that calling `session_id()` I could retrieve this. But this just gives an "undefined variable" error, so I guess I have to set it manually..? If so then what's the best way so that it will be a unique ID, or what is the usual method? Thanks for any help...

Original source