Superglobal là các biến PHP dựng sẵn tự động khả dụng trong mọi scope — chúng chứa dữ liệu request, thông tin server, session và hơn thế. Đây là cách các script PHP truy cập thông tin của HTTP request đến.
Các superglobal chính
Những biến này khả dụng ở mọi nơi (không cần từ khóa global), khác với biến thường vốn bị giới hạn trong phạm vi hàm của chúng.
// tham số query và dữ liệu form
$id = $_GET['id'] ?? null; // ?? cung cấp giá trị mặc định nếu thiếu
$username = $_POST['username'] ?? '';
// thông tin request
$method = $_SERVER['REQUEST_METHOD']; // "GET", "POST"
$uri = $_SERVER['REQUEST_URI'];
$ip = $_SERVER['REMOTE_ADDR'];
// ❌ NGUY HIỂM — dùng input thô trực tiếp mở đường cho tấn công
$query = "SELECT * FROM users WHERE id = " . $_GET['id']; // SQL INJECTION!
echo $_GET['name']; // XSS!
// ✅ LUÔN validate, làm sạch và escape input của người dùng
$id = (int) $_GET['id']; // ép kiểu/validate
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); // truy vấn tham số hóa
echo htmlspecialchars($_GET['name']); // escape khi xuất (ngăn XSS)
Dữ liệu từ $_GET, $_POST, $_COOKIE, $_REQUEST là input không đáng tin của người dùng — dùng trực tiếp sẽ mở đường cho SQL injection, XSS và các tấn công khác. Hãy luôn validate, dùng truy vấn tham số hóa cho cơ sở dữ liệu, và escape output.
Superglobal là nền tảng của phát triển web bằng PHP — chúng là cách các script nhận dữ liệu HTTP request (query string, dữ liệu form gửi lên, cookie, session, file upload, thông tin server), nên hiểu chúng là kiến thức thiết yếu hằng ngày để xử lý mọi input của người dùng.
Biết mỗi superglobal chứa gì ($_GET, $_POST, $_SERVER, $_SESSION, v.v.) và cách truy cập dữ liệu request là cần thiết để xây bất kỳ ứng dụng PHP nào.
Nhưng điểm quan trọng nhất là bảo mật: dữ liệu từ $_GET/$_POST/$_COOKIE/$_REQUEST là input không đáng tin của người dùng, và dùng trực tiếp chính là gốc rễ của những lỗ hổng web phổ biến và nguy hiểm nhất (SQL injection, XSS).
Hiểu rằng dữ liệu request từ superglobal phải luôn được validate, dùng an toàn (truy vấn tham số hóa cho cơ sở dữ liệu) và escape khi xuất là kiến thức then chốt, thiết yếu về bảo mật — vì superglobal là điểm vào của input người dùng, xử lý sai chúng là nơi nhiều vụ vi phạm bảo mật PHP nghiêm trọng bắt nguồn, khiến việc xử lý chúng an toàn là trách nhiệm nền tảng của mọi lập trình viên PHP. (Các framework hiện đại như Laravel bọc superglobal trong các lớp trừu tượng request an toàn hơn, nhưng nguyên tắc cốt lõi là không bao giờ tin input vẫn không đổi.)