$_GET represents values that arrived in the query string.

query string input Query parameters arrive as text, so programs often convert them before doing arithmetic.

Query Params

pageInput
query_params.php
Replay: real traced execution (multi-file project)
<?php
$pageInput = "2";
$_GET["page"] = $pageInput;
$pageText = $_GET["page"] ?? "1";
$page = (int)$pageText;
$offset = ($page - 1) * 10;

echo "pageText=" . $pageText . "\n";
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
<?php
$pageInput = "1";
$_GET["page"] = $pageInput;
$pageText = $_GET["page"] ?? "1";
$page = (int)$pageText;
$offset = ($page - 1) * 10;

echo "pageText=" . $pageText . "\n";
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
<?php
$pageInput = "5";
$_GET["page"] = $pageInput;
$pageText = $_GET["page"] ?? "1";
$page = (int)$pageText;
$offset = ($page - 1) * 10;

echo "pageText=" . $pageText . "\n";
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
  1. $pageInput ← 2, $_GET["page"] ← 2, $pageText ← 2, $page ← 2, $offset ← 10

    1<?php2$pageInput→ 2 = "2"; //@pageInput="1", "5"3$_GET["page"]→ 2 = $pageInput2;4$pageText→ 2 = $_GET["page"]2 ?? "1";5$page→ 2 = (int)$pageText2;6$offset→ 10 = ($page2 - 1) * 10;78echo "pageText=" . $pageText2 . "\n";9echo "page=" . $page2 . "\n";10echo "offset=" . $offset10 . "\n";
    outputpageText=2
    page=2
    offset=10
    values this stepArray$_GET
  1. $pageInput ← 1, $_GET["page"] ← 1, $pageText ← 1, $page ← 1, $offset ← 0

    1<?php2$pageInput→ 1 = "1";3$_GET["page"]→ 1 = $pageInput1;4$pageText→ 1 = $_GET["page"]1 ?? "1";5$page→ 1 = (int)$pageText1;6$offset→ 0 = ($page1 - 1) * 10;78echo "pageText=" . $pageText1 . "\n";9echo "page=" . $page1 . "\n";10echo "offset=" . $offset0 . "\n";
    outputpageText=1
    page=1
    offset=0
    values this stepArray$_GET
  1. $pageInput ← 5, $_GET["page"] ← 5, $pageText ← 5, $page ← 5, $offset ← 40

    1<?php2$pageInput→ 5 = "5";3$_GET["page"]→ 5 = $pageInput5;4$pageText→ 5 = $_GET["page"]5 ?? "1";5$page→ 5 = (int)$pageText5;6$offset→ 40 = ($page5 - 1) * 10;78echo "pageText=" . $pageText5 . "\n";9echo "page=" . $page5 . "\n";10echo "offset=" . $offset40 . "\n";
    outputpageText=5
    page=5
    offset=40
    values this stepArray$_GET