PHP Superglobals

PHP Superglobals

Superglobals are built-in PHP variables accessible from any scope without needing the global keyword.

1 - $_GET and $_POST

// URL: /search?q=php&page=2
$query = $_GET["q"]    ?? "";
$page  = (int)($_GET["page"] ?? 1);

// POST form data
$email    = $_POST["email"]    ?? "";
$password = $_POST["password"] ?? "";

2 - $_SERVER

$_SERVER["REQUEST_METHOD"] // "GET" or "POST"
$_SERVER["HTTP_HOST"]      // "example.com"
$_SERVER["REQUEST_URI"]    // "/page?id=1"
$_SERVER["REMOTE_ADDR"]    // client IP
$_SERVER["HTTP_USER_AGENT"] // browser info
$_SERVER["HTTPS"]          // "on" if HTTPS

3 - $_FILES

$_FILES["upload"]["name"]     // original filename
$_FILES["upload"]["tmp_name"] // temp path on server
$_FILES["upload"]["size"]     // bytes
$_FILES["upload"]["type"]     // MIME (browser-provided)
$_FILES["upload"]["error"]    // UPLOAD_ERR_OK = 0

4 - $_COOKIE, $_SESSION, $_ENV

$_COOKIE["theme"]      // "dark"
$_SESSION["user_id"]   // 42
$_ENV["APP_SECRET"]    // from environment
$GLOBALS["config"]     // any global variable

Note: Always use the null coalescing operator ?? when reading from superglobals to avoid undefined index warnings: $_GET["page"] ?? 1.

-Tip-