PHP глобальные переменные и их использование в функциях
Глобальные переменные в PHP позволяют получать доступ к данным из любой части кода. Они часто используются для хранения информации о сервере, запросах пользователя и настройках приложения. В этой статье подробно разберём что такое PHP глобальные переменные, какие из них существуют, и как использовать глобальные переменные PHP в функциях правильно и безопасно.
Что такое глобальные переменные в PHP
PHP глобальные переменные — это специальные переменные, которые доступны в любом скрипте без явного объявления. Они создаются автоматически и содержат данные о сервере, HTTP-запросе, cookies, сессиях и окружении выполнения. В отличие от обычных переменных, область видимости глобальных переменных — весь скрипт.
Основные глобальные переменные PHP
PHP предоставляет набор суперглобальных массивов. Вот основной список:
- $_GET — данные из URL-параметров (?order_id=123).
- $_POST — данные отправленные через форму методом post.
- $_REQUEST — объединение GET, POST и COOKIE одним массивом.
- $_SERVER — информация о сервере и запросе.
- $_SESSION — данные сессии.
- $_COOKIE — cookie пользователя.
- $_FILES — загруженные файлы.
- $_ENV — переменные окружения (чаще используется для конфигураций).
- $GLOBALS — массив всех глобальных переменных.
Более подробно о некоторых глобальных переменных мы уже рассказывали в предыдущих статьях. Например, php cookie что это или php session что это.
Пример использования PHP глобальных переменных
Использовать глобальные переменные можно как и обычные, вывести на экран их содержимое или передать в какую либо функцию как параметр.
echo $_SERVER['HTTP_HOST']; echo $_GET['order_id']; echo $_POST['email']; var_dump($_REQUEST); echo $_SESSION['user_name']; echo $_COOKIE['user_surname']; var_dump($_FILES); echo $_ENV['DB_NAME']; var_dump($GLOBALS);
PHP глобальные переменные и область видимости
Важно понимать что обычная переменная, объявленная вне функции, не доступна внутри функции по умолчанию.
$name = 'Alex';
function test() {
echo $name; // Ошибка
}
Для доступа используются специальные механизмы в виде ключевого слова global, которое подключает переменную извне.
$name = 'Alex';
function test() {
global $name;
echo $name;
}
Здесь global $name делает переменную доступной внутри функции. Альтернативный и более явный способ — это массив $GLOBALS.
$name = 'Alex';
function test() {
echo $GLOBALS['name'];
}
Этот способ часто предпочтительнее, так как явно показывает источник данных.
Безопасность при работе с глобальными переменными PHP
Данные полученные через глобальные переменные, никогда не должны считаться безопасными по умолчанию. Это особенно актуально для:
- $_GET
- $_POST
- $_REQUEST
- $_COOKIE
Перед использованием таких входящих переменных необходимо:
- Проверять существование ключей.
- Приводить значения к нужному типу.
- Использовать функции фильтрации (filter_input, htmlspecialchars, intval и др.).
Это снижает риск XSS-атак, SQL-инъекций и логических ошибок.
Работа с суперглобальными переменными в функциях
Суперглобальные массивы доступны в функциях без global.
function getUserIp() {
return $_SERVER['REMOTE_ADDR'];
}
echo getUserIp();
Это одна из причин почему суперглобальные переменные так активно используются в PHP.
Заключение
PHP глобальные переменные — это мощный инструмент, который упрощает доступ к данным окружения и запроса. Понимание того, как использовать глобальные переменные PHP в функциях, помогает писать корректный и поддерживаемый код. Главное применять их осознанно и не злоупотреблять.
| Переменная | Описание |
|---|---|
| $_GET | Содержит данные, переданные в скрипт через параметры URL методом GET |
| $_POST | Содержит данные, отправленные через HTML-форму методом POST |
| $_REQUEST | Объединяет данные из $_GET, $_POST и $_COOKIE |
| $_SERVER | Информация о сервере, заголовках, путях и окружении выполнения скрипта |
| $_SESSION | Переменные текущей пользовательской сессии (требует session_start) |
| $_COOKIE | Данные cookie, переданные браузером пользователя |
| $_FILES | Информация о загруженных файлах через HTML-формы |
| $_ENV | Переменные окружения сервера |
| $GLOBALS | Ассоциативный массив всех глобальных переменных скрипта |