Команды выполняются после функции header () в PHP? - PullRequest
1 голос
/ 11 октября 2010

Например, здесь:

<?php
    session_start();

    if (!isset($_SESSION['is_logged_in'])) {
        header("Location: login.php");
        die();
    }
?>
<Some HTML content>

Действительно ли die() здесь необходимо?

Ответы [ 4 ]

4 голосов
/ 11 октября 2010

действительно ли нужно здесь die ()?

Это: в противном случае клиент все равно получит HTML-код в теле ответа. Заголовок просит клиента завершить работу и перейти на новую страницу, но он не может принудительно сделать это.

Клиент всегда может продолжать слушать ответ и впоследствии получать все, что выводится, что является фатальной дырой в безопасности, например, при защите конфиденциальных данных в области входа в систему.

1 голос
/ 11 октября 2010

Да, die() необходимо.Вызов header("Location: some-location.php") отправляет указанный заголовок (в данном случае редирект 302) в браузер;но это НЕ завершает сценарий.Это становится более важным, если строки после оператора redirect содержат код PHP, который может выполняться непреднамеренно.Поэтому, если вы хотите отправить заголовок перенаправления и прекратить любую дальнейшую обработку, вы должны вызвать die, exit, return или любую другую подобную конструкцию.* после отправки заголовка перенаправления.

0 голосов
/ 11 октября 2010

Я обнаружил, что: http://www.figured -it-out.com / figured-out.php? Sid = 181

Таким образом, в соответствии с этим кажется, что некоторые браузеры просто прекращают получать html-контент и перенаправляют прямо на новую страницу, где другие браузеры, такие как IE, все еще ждут, пока загрузка страницы не будет готова.

0 голосов
/ 11 октября 2010

Да. Простое создание заголовка, даже заголовка Location, не завершает текущий сценарий. Вывод HTML будет виден, например, в виде анализатор пакетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...