Superglobals as Concepts
Session Values
$_SESSION models server-side state associated with a visitor.
server-side memory
A session value can be read, updated, and used to choose a response label.
Session Values
session_values.php
Replay: real traced execution (multi-file project)
<?php
$startCount = 1;
$_SESSION["visits"] = $startCount;
$_SESSION["visits"] = $_SESSION["visits"] + 1;
$visits = $_SESSION["visits"];
$message = $visits > 1 ? "welcome back" : "first visit";
echo "visits=" . $visits . "\n";
echo "message=" . $message . "\n";
<?php
$startCount = 0;
$_SESSION["visits"] = $startCount;
$_SESSION["visits"] = $_SESSION["visits"] + 1;
$visits = $_SESSION["visits"];
$message = $visits > 1 ? "welcome back" : "first visit";
echo "visits=" . $visits . "\n";
echo "message=" . $message . "\n";
<?php
$startCount = 4;
$_SESSION["visits"] = $startCount;
$_SESSION["visits"] = $_SESSION["visits"] + 1;
$visits = $_SESSION["visits"];
$message = $visits > 1 ? "welcome back" : "first visit";
echo "visits=" . $visits . "\n";
echo "message=" . $message . "\n";
$startCount ← 1, $_SESSION["visits"] ← 1, $visits ← 2, $message ← welcome back
1<?php2$startCount→ 1 = 1; //@startCount=0, 43$_SESSION["visits"]→ 1 = $startCount1;4$_SESSION["visits"]→ 2 = $_SESSION["visits"] + 1;5$visits→ 2 = $_SESSION["visits"]2;6$message→ welcome back = $visits2 > 1 ? "welcome back" : "first visit";78echo "visits=" . $visits2 . "\n";9echo "message=" . $messagewelcome back . "\n";outputvisits=2 message=welcome backvalues this stepNULL$_SESSION
$startCount ← 0, $_SESSION["visits"] ← 0, $visits ← 1, $message ← first visit
1<?php2$startCount→ 0 = 0;3$_SESSION["visits"]→ 0 = $startCount0;4$_SESSION["visits"]→ 1 = $_SESSION["visits"] + 1;5$visits→ 1 = $_SESSION["visits"]1;6$message→ first visit = $visits1 > 1 ? "welcome back" : "first visit";78echo "visits=" . $visits1 . "\n";9echo "message=" . $messagefirst visit . "\n";outputvisits=1 message=first visitvalues this stepNULL$_SESSION
$startCount ← 4, $_SESSION["visits"] ← 4, $visits ← 5, $message ← welcome back
1<?php2$startCount→ 4 = 4;3$_SESSION["visits"]→ 4 = $startCount4;4$_SESSION["visits"]→ 5 = $_SESSION["visits"] + 1;5$visits→ 5 = $_SESSION["visits"]5;6$message→ welcome back = $visits5 > 1 ? "welcome back" : "first visit";78echo "visits=" . $visits5 . "\n";9echo "message=" . $messagewelcome back . "\n";outputvisits=5 message=welcome backvalues this stepNULL$_SESSION