Зачем нужен exit после header("location: file.php")

Тема в разделе "Как сделать...", создана пользователем Silverst, 31 июл 2012.

  1. Silverst

    Silverst Писатель

    Регистр.:
    23 мар 2008
    Сообщения:
    7
    Симпатии:
    2
    Зачем нужен exit() после header("location: file.php"), если и так идет редирект после хедера и скрипт дальше не выполняется?

    пример:

    Код:
    header("location: file.php");
    exit();
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    https://www.google.ru/search?client...rceid=opera&ie=utf-8&oe=utf-8&channel=suggest
    http://www.cyberforum.ru/php/thread211380.html
     
  3. Silverst

    Silverst Писатель

    Регистр.:
    23 мар 2008
    Сообщения:
    7
    Симпатии:
    2
    уже читал эту тему, внятно так и не объяснили. В документации написано, что exit "Прекращает выполнение скрипта", а в той теме пишут, что прекращает загрузку. Т.е. exit прекращает загрузку, а header("location...") - нет, или как?
     
  4. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    776
    Симпатии:
    230
    если я правильно понял, то скрипт, перед перенаправлением, полностью "читается".
    EXIT же ставят для того, чтобы сэкономить время обработки и не "считывать" лишнее (то, что идет после location).
     
  5. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    header - отсылает заголовок, а переходить или нет по адресу, указанному в header:Location..., решает браузер.

    А зачем вам, отослав пользователя на другую страницу, дальше продолжать обработку документа?
     
  6. Silverst

    Silverst Писатель

    Регистр.:
    23 мар 2008
    Сообщения:
    7
    Симпатии:
    2
    это предположение или где-то указывается в документации (я на счет того что после exit не считывается докумет)?

    мне не надо продолжать обработку, просто хочу разобраться какую роль выполняет exit в данном примере

    т.е. правильно ли я понял, что:
    1. После location скрипт загружается, но не выполняется?
    2. После exit и не загружается и соотв. не выполняется?
     
  7. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    776
    Симпатии:
    230
    офиц. документация отличная вещь
    exit — Выводит сообщение и прекращает выполнение текущего скрипта
     
  8. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    да что тут сложного?
    PHP:
    header("location: file.php");
    отправляет 302 редирект на страницу file.php(т.е. в браузере открывается file.php). Разумеется после выполнения подобного действия продолжать работу сценария в исходном файле нет смысла и для освобождения ресурсов сервера скрипт принудительно останавливают. Имеет смысл если дальше идёт ещё какой-то код.
     
  9. Silverst

    Silverst Писатель

    Регистр.:
    23 мар 2008
    Сообщения:
    7
    Симпатии:
    2
    после location скрипт и так не выполняется (проверил только что), ну в общем, получается, что exit ставится на тот случай если браузер вдруг решит выполнить скрипт после location

    P.S. вывод сделан на основе (кусок из оф документации) :
    Код:
    <?php
    header("Location: http://www.example.com/"); /* Redirect browser */
     
    /* Make sure that code below does not get executed when we redirect. */
    exit;
    ?>
     
  10. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    бред. Браузеры не могут выполнить скрипт после определённой строки. ставится тупо чтобы принудительно освободить ресурсы сервера. Хотя если после слова exit() больше никакого кода нет, то я тоже не понимаю зачем его написали. наверно для очистки совести, потому что компилятор и "сам бы его туда поставил"