The session_start(
) function is used to create a new
session. A session is unique to the interaction between a browser and a web
database application. If you use your browser to access several sites at once,
you'll have several unrelated sessions. Similarly, if several users access your
application each has their own session. However, if you access an application
using two browsers (or two browser windows) at the same time, in most cases the
browsers will share the same session; this can lead to unpredictable
behavior—that's the reason why many web sites warn against it.
The first time a user requests a script that calls
session_start( ), PHP generates a new session ID and creates an empty
file to store session variables. PHP also sends a cookie back to the browser
that contains the session ID. However, because the cookie is sent as part of the
HTTP headers in the response to the browser, you need to call session_start(
) before any other output is generated
The session identifier
generated by PHP is a random string of 32 hexadecimal digits, such as
fcc17f071bca9bf7f85ca281094390b4. When a new session is started, PHP
creates a session file, using the session identifier, prefixed with
sess_, for the filename. For example, the filename associated with our
example session ID on a Unix system is
/tmp/sess_fcc17f071bca9bf7f85ca281094390b4.
Using Session Variables
The session_start(
) function is also used to find an existing session. If a call is made to
session_start( ), and a session has previously been started, PHP attempts
to find the session file and initialize the session variables. PHP does this
automatically by looking for the session cookie in the browser request whenever
you call session_start( ). You don't need to do anything different when
starting a new session or restoring an existing one. Even if the identified
session file can't be found, session_start( ) simply creates a new
session file.
A simple PHP script that uses a session
<?php require_once "HTML/Template/ITX.php"; // This call either creates a new session or finds an existing one. session_start( ); // Check if the value for "count" exists in the session store // If not, set a value for "count" and "start" if (!isset($_SESSION["count"])) { $_SESSION["count"] = 0; $_SESSION["start"] = time( ); } // Increment the count $_SESSION["count"]++; $template = new HTML_Template_ITX("./templates"); $template->loadTemplatefile("example.10-2.tpl", true, true); $template->setVariable("SESSION", session_id( )); $template->setVariable("COUNT", $_SESSION["count"]); $template->setVariable("START", $_SESSION["start"]); $duration = time( ) - $_SESSION["start"]; $template->setVariable("DURATION", $duration); $template->parseCurrentBlock( ); $template->show( ); ?>