$_SERVER ["HTTP_REFERER"] пуст после перенаправления
Я не хочу разрешать пользователям вводить URL-адреса вручную в веб-браузере. Это может привести к хакерским атакам. Поэтому, если HTTP-реферер пуст, он должен перенаправить на домашнюю страницу.
Я пишу этот php-код в индексе веб-приложения drupal.РНР.
if($_SERVER["HTTP_REFERER"] == "")
{
header("Location:http://mysite.com");
}
Проблема в том, что цикл продолжается бесконечно. Он никогда не показывает домашнюю страницу. $_SERVER ["HTTP_REFERER"] всегда пуст.
В Firefox, я получаю ниже ошибку. Страница не перенаправление правильно Firefox обнаружил, что сервер перенаправляет запрос на этот адрес таким образом, который никогда не будет завершен.
Как ее решить?






Ответы - $_SERVER ["HTTP_REFERER"] пуст после перенаправления / $_SERVER["HTTP_REFERER"] is empty after redirect

11.09.2013 04:16:43
Код, который вы опубликовали, делает свою работу. Если люди пытаются получить доступ к корню вашего сайта без реферера, конечно, это будет цикл навсегда.
Заменить header("Location:http://mysite.com");
что указывает на другую страницу на вашем сервере header("Location:http://mysite.com/no_referer.php");
и, конечно, создать страницу под названием no_referer.php
с некоторым содержанием в нем говорит им об этом.
Поскольку код постоянно проверяет, является ли реферер с вашего сайта, должно быть три разных страницы, и они выглядят следующим образом:
- индекс.php (предполагая, что это то, что ваш индексный файл называется)
- добро пожаловать.РНР
- no_referer.РНР
Один для индекса, один для приветствия доступа и один для плохого реферера.
Попробуйте это вместо этого и дайте ему условие.
(Внутри вашего индекса.PHP-файл)
<?php
if($_SERVER["HTTP_REFERER"] == "")
{
header("Location:http://mysite.com/no_referer.php");
exit;
}
else {
header("Location:http://mysite.com/welcome.php");
exit;
}
?>
И чтобы проверить с помощью href
, используйте следующее и создайте страницу с именем test_referer.php
, который будет выступать в качестве вашего index.php
-файл.
<a href="referer_test.php">Referer test</a>
Затем скопируйте приведенный выше код (the code that checks for a referer
) в файл с именем referer_test.php
, и создать другие страницы соответственно называется no_referer.php
и welcome.php
с соответствующим содержимым внутри.



11.11.2019 02:54:11
Правильная проверка должна быть:
if (isset($_SERVER["HTTP_REFERER"]) && !empty($_SERVER["HTTP_REFERER"]))
{
... do something with referer
}
Потому что $_SERVER ["HTTP_REFERER"] = = " выдаст ошибку, когда реферер не установлен.