The HTTP protocol used by the internet is by nature a stateless protocol, which means that after an HTTP request is received and a response is generated the process which generated that response is released. When a subsequent request is received from the same client there is no memory of any previous request, so there is no 'state' maintained between requests. This is because a child process generated by the web server is not tied to any particular client, so after dealing with a request from one client it may deal with many requests from many other clients. A subsequent request from the same client may then be given to a different process, so any 'state' maintained by the previous process would be inaccessible.
The PHP language has a standard method to deal with this called sessions whose workings can be summarised as follows:
<session_name>is the session name. This defaults to
PHPSESSIDbut can be changed using the session_name() function.
<session_id>is a unique string containing 32 random characters.
The $_SESSION superglobal is an associative array, which means that it can hold any number of
name=value pairs. It is also possible for this to be a multi-dimensional array by specifying
value as an array instead of a single value. By using this feature I can maintain a different set of variables for each script in a
$script_vars array, and by writing them to the $_SESSION array as
<script_id>=$script_vars I can keep the session data for each script totally separate from other scripts within the same session.
More information on this topic can be found in Working with a stateless protocol.