Tutorial PHP #16: Superglobal Variable di PHP

1. Apa itu Superglobal?

Superglobal adalah variabel bawaan PHP yang bisa diakses dari mana saja - di dalam function, class, atau file manapun - tanpa perlu keyword global. PHP menyediakan sembilan superglobal.

2. Daftar Superglobal PHP

  • $_GET - data dari query string URL
  • $_POST - data dari form method POST
  • $_REQUEST - gabungan GET, POST, dan COOKIE
  • $_SERVER - informasi server dan environment
  • $_SESSION - data session user
  • $_COOKIE - data cookie dari browser
  • $_FILES - data file yang diupload
  • $_ENV - variabel environment sistem
  • $GLOBALS - semua variabel global

3. $_SERVER

Berisi informasi tentang server, request, dan lingkungan eksekusi:

<?php
// Nama file PHP yang sedang dieksekusi
echo $_SERVER["PHP_SELF"];          // Output: /index.php

// Metode request (GET atau POST)
echo $_SERVER["REQUEST_METHOD"];    // Output: GET atau POST

// Alamat IP pengunjung
echo $_SERVER["REMOTE_ADDR"];       // Output: 127.0.0.1

// Nama host server
echo $_SERVER["SERVER_NAME"];       // Output: localhost

// URL lengkap yang diminta
echo $_SERVER["REQUEST_URI"];       // Output: /project/index.php?id=1

// HTTP User Agent (browser info)
echo $_SERVER["HTTP_USER_AGENT"];   // Output: Mozilla/5.0 ...

// Document root server
echo $_SERVER["DOCUMENT_ROOT"];     // Output: C:/xampp/htdocs
?>

4. $_REQUEST

<?php
// Mengambil data tanpa peduli apakah dari GET atau POST
$nama = $_REQUEST["nama"] ?? "Guest";
echo $nama;
?>

Tips: Hindari $_REQUEST untuk keamanan - lebih baik pakai $_GET atau $_POST secara eksplisit.

5. $GLOBALS

<?php
$nama  = "Ariq";
$umur  = 25;

function tampilInfo() {
    // Akses variabel global tanpa keyword global
    echo $GLOBALS["nama"] . ", " . $GLOBALS["umur"] . " tahun";
}

tampilInfo();   // Output: Ariq, 25 tahun
?>

6. Contoh Praktis - Deteksi Jenis Request

<?php
// Deteksi apakah request menggunakan HTTPS
$protokol = (!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] !== "off") ? "https" : "http";

// Bangun base URL secara dinamis
$baseUrl = $protokol . "://" . $_SERVER["SERVER_NAME"];

// Cek apakah request dari Ajax
$isAjax = !empty($_SERVER["HTTP_X_REQUESTED_WITH"]) 
          && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) === "xmlhttprequest";

echo "URL: $baseUrl";
echo "Ajax: " . ($isAjax ? "Ya" : "Tidak");
?>

7. Ringkasan

  • Superglobal tersedia di seluruh scope - tidak perlu keyword global
  • $_SERVER berisi info server, request method, IP, dsb
  • $_GET dan $_POST untuk data form, gunakan secara eksplisit
  • Selalu validasi dan sanitasi data dari superglobal sebelum digunakan

Tutorial berikutnya membahas session di PHP.


ariq fadhil

Im Ariq Tech, a Top Rated Fullstack Developer with 5+ years of experience, delivering high-quality solutions across 50+ projects.