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 $_SERVERberisi info server, request method, IP, dsb$_GETdan$_POSTuntuk data form, gunakan secara eksplisit- Selalu validasi dan sanitasi data dari superglobal sebelum digunakan
Tutorial berikutnya membahas session di PHP.
.jpg)
