A program can choose which request source should win when several sources contain a value.

explicit source order Choosing an order explicitly is clearer than assuming every request source has the same meaning.

Request Priority

preferred
request_priority.php
Replay: real traced execution (multi-file project)
<?php
$preferred = "get";
$_GET["mode"] = "query";
$_POST["mode"] = "form";
$_COOKIE["mode"] = "stored";

if ($preferred === "post") {
    $mode = $_POST["mode"];
} elseif ($preferred === "cookie") {
    $mode = $_COOKIE["mode"];
} else {
    $mode = $_GET["mode"];
}

echo "preferred=" . $preferred . "\n";
echo "mode=" . $mode . "\n";
<?php
$preferred = "post";
$_GET["mode"] = "query";
$_POST["mode"] = "form";
$_COOKIE["mode"] = "stored";

if ($preferred === "post") {
    $mode = $_POST["mode"];
} elseif ($preferred === "cookie") {
    $mode = $_COOKIE["mode"];
} else {
    $mode = $_GET["mode"];
}

echo "preferred=" . $preferred . "\n";
echo "mode=" . $mode . "\n";
<?php
$preferred = "cookie";
$_GET["mode"] = "query";
$_POST["mode"] = "form";
$_COOKIE["mode"] = "stored";

if ($preferred === "post") {
    $mode = $_POST["mode"];
} elseif ($preferred === "cookie") {
    $mode = $_COOKIE["mode"];
} else {
    $mode = $_GET["mode"];
}

echo "preferred=" . $preferred . "\n";
echo "mode=" . $mode . "\n";
  1. $preferred ← get, $_GET["mode"] ← query, $_POST["mode"] ← form

    1<?php2$preferred→ get = "get"; //@preferred="post", "cookie"3$_GET["mode"]→ query = "query";4$_POST["mode"]→ form = "form";5$_COOKIE["mode"]→ stored = "stored";67if ($preferred === "post") {8    $mode = $_POST["mode"];9} elseif ($preferred === "cookie") {10    $mode = $_COOKIE["mode"];11} else {12    $mode→ query = $_GET["mode"]query;13}1415echo "preferred=" . $preferredget . "\n";16echo "mode=" . $modequery . "\n";
    outputpreferred=get
    mode=query
    values this stepArray$_GETArray$_POSTArray$_COOKIE
  1. $preferred ← post, $_GET["mode"] ← query, $_POST["mode"] ← form

    1<?php2$preferred→ post = "post";3$_GET["mode"]→ query = "query";4$_POST["mode"]→ form = "form";5$_COOKIE["mode"]→ stored = "stored";
    values this stepArray$_GETArray$_POSTArray$_COOKIE
  2. $mode ← form

    7if ($preferredpost === "post") {8    $mode→ form = $_POST["mode"]form;9} elseif ($preferred === "cookie") {
  3. echo "preferred=" . $preferred . " ";

    15echo "preferred=" . $preferredpost . "\n";16echo "mode=" . $modeform . "\n";
    outputpreferred=post
    mode=form
  1. $preferred ← cookie, $_GET["mode"] ← query, $_POST["mode"] ← form

    1<?php2$preferred→ cookie = "cookie";3$_GET["mode"]→ query = "query";4$_POST["mode"]→ form = "form";5$_COOKIE["mode"]→ stored = "stored";67if ($preferred === "post") {8    $mode = $_POST["mode"];9} elseif ($preferred === "cookie") {10    $mode→ stored = $_COOKIE["mode"]stored;11} else {12    $mode = $_GET["mode"];13}1415echo "preferred=" . $preferredcookie . "\n";16echo "mode=" . $modestored . "\n";
    outputpreferred=cookie
    mode=stored
    values this stepArray$_GETArray$_POSTArray$_COOKIE