Когда браузер отправляет информацию заголовка на сервер, $_SERVER['HTTP_REFERER']
должен указывать нам предыдущий URL-адрес страницы?
Что возвращает из $_SERVER['HTTP_REFERER']
, когда информация заголовка не отправляется на сервер? пустая строка? ложный? ноль? или… ?
Если заголовок запроса рефератора HTTP не отправлен, значит, $_SERVER['HTTP_REFERER']
, вероятно, не установлен, хотя это может быть пустая строка. Будет ли он установлен или нет, в этом случае может зависеть от сервера.
Как и во всех заголовках HTTP-запроса, проверьте его наличие при чтении:
$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
$_SERVER['HTTP_REFERER']
не является действительно надежным, потому что конкретная настройка в браузере пользователя может его сломать. Но да, он должен содержать предыдущий URL, и он будет возвращать пустую строку или NULL, если заголовки не отправлены, в зависимости от конфигурации сервера.
$ _SERVER – это глобальная переменная массива, а значение referrer – это элемент массива с ключом HTTP_REFERER. Если ни один сервер заголовка не отправляется браузером, то элемент просто отсутствует в массиве. Вы можете проверить, имеет ли массив элемент с array_key_exists ; в этом случае:
array_key_exists('HTTP_REFERER', $_SERVER)
когда он не установлен, значение будет либо нулевым, либо неопределенным.
альтернативой будет использование
$_SERVER['REDIRECT_URL']