Introduction to PHP - IV

PHP-Sessions:

An alternative way to make data accessible across the various pages of an entire website is to use a php session. A session creates a file in a temporary directory on the server where registered session variables and their values are stored. This data will be available to all pages on the site during the visit. The location of the temporary file is determined by setting in the php.ini file called session.save_path. Before using any session variable make sure you have setup this path. 

When a session is started following things happen:
  • PHP first creates a unique identifier for that particular session which is a random string of 32 hexadecimal numbers such as 3c7fojk34cda3jj973hjkop2fc937e3443.
  • A file is automatically created on the server in the designated temporary directory and bears the name of the unique identifier prefixed by sess_ e.g. sess_3c7fojk34cda3jj973hjkop2fc937e3443.
When a PHP script wants to retrieve the value from a session variable,PHP automatically gets the unique session identifier string from the PHPSESSID (PHP session ID) cookie and then looks in its temporary directory for the file bearing that name and a validation can be done by comparing both values.

A session ends when the user loses the browser or after leaving the site, the server will terminate the session after a predetermined period of time, commonly 30 minutes duration.

Starting a PHP Session:

A PHP session is easily started by making a call to the session_start( ) function. This function first checks if a session is already started and if none is started then it starts one. It is recommended to put the call to session_start ( ) at the beginning of the page. 
Session variables are stored in associative array called $_SESSION[ ]. These variables can be accessed during lifetime of a session.
The following example starts a session then register a variable called counter that is incremented each time the page is visited during the session.

<?php
        session_start();
        if( isset($_SESSION['counter'])){
                $_SESSION['counter'] +=1;
        }else{
                $_SESSION['counter']=1;
        }
        $msg = "You have visited this page ". $_SESSION['counter'];. "times."
        $msg = "in this session.";
?>
<html>
        <head>
                <title>My SESSION Page</title>
        </head>
        <body>
                <?php echo ($msg); ?>
        </body>
</html>

Destroying a PHP Session:

A PHP session can be destroyed by session_destroy() function. This function doesnot need any argument and a single call can destroy all the session variables. If you want to destroy a single session variable then you can use unset() function to unset a session variable. Here's the example to unset a single variable -

<?php
        unset($_SESSION['counter']);
?>

Here's the call which will destroy all the session variables - 

<?php 
        session_destroy();
?>

You don't need to call start_session() function to start a session when a user visits your site if you can set session.auto_start variable to 1 in php.ini file.


Sessions without cookies:

There may be a case when a user does not allow to store cookies on their machine. So there is another method to send session ID to the browser.Alternatively, we can use the constant SID which is defined if the session started. If the client did not send an appropriate session cookie, it has the form session_name=session_id. Otherwise, it expands to an empty string. thus you can embed it unconditionally into URLs.The following example demonstrates how to register a variable, and how to link correctly to another page using SID.

<?php
        session_start( );
        if(isset($_SESSION['counter'])){
                $_SESSION['counter'] =1;
        }else{
                $_SESSION['counter']++;
        }

        $msg = "you have visited this page". $_SESSION['counter'];
        $msg = "in this sessionl.";

        echo ($msg);
?>

<p>
        To continue click the following link <br/>
        <a href ="nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>

It will produce the following result:

You have visited this page 1 in this session.
To continue click following link.

The htmlspecialchars( ) may be used when printing the SID in order to prevent XSS related attacks.

XSS attacks = Cross-site scripting attacks.


If you still feel you've not got any idea about sessions please view the following video:



OR:



If you've any questions feel free to post here i'll answer your all questions.

No comments:

Post a Comment