PHP Sessions


A session is a way to store information (flexibly) that will be used on all multiple pages.

Unlike cookies, information is not stored on users' computers.


What is a PHP Session?

When you work with a program, you open it, make some changes, and then close it. This is very similar to the Session. The computer knows who you are. It knows when to start a program and when to finish. But on the Internet there is one problem: the web server does not know who you are or what you are doing, because the HTTP address does not maintain status.

Session dynamics solves this problem by storing user information that will be used on all multiple pages (e.g. username, favorite color, etc.). By default, the session variable stays until the user closes the browser.

So; Session variables capture information about a single user, and are available on all pages in one app.


Tip: If you need permanent storage, you may want to store data on a website.



Start a PHP Session

Session starts with session_start() function.

Session dynamics is set with a global PHP variable: $ _SESSION.

Now, let's create a new page called "demo_session1.php". On this page, we start a new PHP session and set the session dynamics:


Example
<?php
// Start the session
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>


</body>
</html>

Note: The session_start() function should be the first thing in your document. Before any HTML tags.



Get PHP Session Variable Values

Next, we create another page called "demo_session2.php". On this page, we will access the session information we put on the home page ("demo_session1.php").

Note that the session dynamics are not transferred individually to each new page, but are removed from the session we open at the beginning of each page (session_start()).

Also note that all variable session values ​​are kept in the global $ _ SESSION variable:


Example
<?php
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>


</body>
</html>

Another way to show all the variables of a user session session is to use the following code:


Example
<?php
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>


</body>
</html>

How does this work? How do you know it's me?

Most of the time it sets the user key on the user's computer which looks like this: 765487cf34ert8dede5a562e4f3a7e12. Then, when a session is opened on another page, it scans the computer to find the user key. If there is a similarity, it reaches that session, if not, it starts a new session.



Modify a PHP Session Variable

To change session dynamics, simply type in:


Example
<?php
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>


</body>
</html>


Destroy a PHP Session

To delete all the variables of the global session and destroy the session, use session_unset() and session_destroy():


Example
<?php
session_start();
?>

<!DOCTYPE html>
<html>
<body>

<?php
// remove all session variables
session_unset();

// destroy the session
session_destroy();
?>


</body>
</html>