Суперглобальные массивы — это специальные встроенные переменные в PHP, которые доступны в любой области видимости (глобальной, функциональной, классовой) без необходимости использования ключевого слова global
. Они содержат информацию о сервере, окружении, пользовательских данных и состоянии сессии.
$_GET
- параметры URL
// Для URL: page.php?id=123&action=edit
$id = $_GET['id']; // 123
$action = $_GET['action']; // 'edit'
$_POST
- данные формы (method="POST")
// Для формы с <input name="username">
$username = $_POST['username'];
$_REQUEST
- объединяет GET, POST и COOKIE данные (не рекомендуется к использованию из-за неочевидного источника данных)
$_SESSION
- данные сессии
session_start();
$_SESSION['user_id'] = 123; // Запись в сессию
$userId = $_SESSION['user_id']; // Чтение
$_COOKIE
- данные cookies
$theme = $_COOKIE['theme'] ?? 'light'; // Чтение с fallback
$_SERVER
- информация о сервере и запросе
$ip = $_SERVER['REMOTE_ADDR'];
$method = $_SERVER['REQUEST_METHOD'];
$_FILES
- загруженные файлы
$file = $_FILES['userfile'];
move_uploaded_file($file['tmp_name'], '/uploads/'.$file['name']);
$_ENV
- переменные окружения
Автоматическая глобальная доступность:
function test() {
$getParam = $_GET['param']; // Доступ без global
}
Всегда существуют - не нужно проверять isset() перед доступом (но нужно проверять элементы)
Модифицируемы - но изменять их не рекомендуется
Всегда проверяйте существование ключей:
$page = $_GET['page'] ?? 'home'; // Null coalescing operator
Фильтруйте входные данные:
$clean_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
Для сессий - валидация данных:
if (!isset($_SESSION['user_authenticated'])) {
die('Access denied');
}
Обработка формы:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = htmlspecialchars($_POST['name']);
// Обработка данных
}
Пагинация через URL:
$page = max(1, (int)($_GET['page'] ?? 1));
Авторизация через сессию:
$_SESSION['user'] = [
'id' => 123,
'name' => 'John Doe'
];
суперглобальные массивы — это мощный инструмент PHP для работы с внешними данными и состоянием приложения. Они требуют аккуратного обращения, валидации и фильтрации входных данных для обеспечения безопасности приложения.