PHP глобальные переменные и их использование в функциях

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 Ассоциативный массив всех глобальных переменных скрипта