Быстрый вопрос, связанный с разработкой PHP, я, кажется, все больше и больше интересуюсь этим, когда разрабатываю более сложные сайты. В основном говорят, что у нас есть базовый почтовый ящик PHP/XHTML (система обмена сообщениями). Я выполняю проверки наверху (проверьте, зарегистрирован ли пользователь, проверьте, имеют ли пользователь правильные разрешения и т. Д.). Затем используйте функцию 'header (' location: www.abc.com) ', если аутентификация завершается с ошибкой. Вопрос в том, что я пишу остальную часть кода входящей почты в огромном блоке «else» или просто использую стандартный html. Я где-то читал о том, что плохо использовать код после использования функции «header».PHP/XHTML. Должен ли я разместить все в тегах эха?
ответ
Просто следуйте ваш заголовок с
exit();
Чем это не будет проблемой.
Также вам не нужно большое эхо, как это, вы можете повторить HTML, как этот Aswell, если вы хотите:
<?php
//php stuff
if(test){
?>
html here
<?php
}
else{
?>
other html
<?php
}
?>
Причины вы читаете это плохо, что клиенты дон 't имеют, чтобы почтить заголовок Location: abc
- поэтому, если вы продолжаете отправлять их данные, они могут просто показать его, возможно, чтобы отслеживать данные ваших пользователей.
Что вы можете сделать, это после того, как вы отправите заголовок Location: abc
, вы просто выйти из сценария, как это:
if(!$user->is_authenticated()) {
header("Location: abc");
exit();
}
ах! функция exit(), спасибо всем, это блестяще. – greenimpala
После перенаправления заголовка, вы помещаете жир «возвращение» или «выхода», поэтому ваш скрипт завершается там, тогда вы закрываете if. Тогда вы можете с радостью скопировать код, как обычно.
Неверно, что после вызова header() вы ничего не должны ставить. Однако вы должны помнить, что если вы выведете что-либо перед вызовом заголовка, сценарий завершится неудачно. Существуют заголовки, для которых требуется ввести код, например заголовок Content-type. После заголовка перенаправления, однако, вы всегда должны вызывать вызов exit(), если браузер не подчиняется инструкции.
Я где-то читал о том, что плохо использовать любой код после использования функции 'header'.
Это не совсем так, потому что не разрешено отправлять выходные данные (HTML или raw output) в браузер, прежде чем отправлять заголовок. Когда вы отправляете выходные данные перед отправкой заголовка, вы получите сообщение «Header уже отправлено».
После функции заголовка остальные не выполняются, поэтому возврат или выезд не требуется.
Задать вопрос, если вам нужно поместить все в структуру if/else: это также не требуется, вам нужно всего лишь проверить, если кто-то зарегистрировался, а если нет, вы выполните перенаправлять с помощью функции заголовка. Нет необходимости в обширной структуре if/else.
- 1. Android, должен ли я разместить контент?
- 2. Должен ли я инициализировать все в конструкторе?
- 3. Где я должен разместить mysql_real_escape_string?
- 4. Где я должен разместить DLL?
- 5. Где я должен разместить mainloop?
- 6. Должен ли я разместить свою игру в классе pygame?
- 7. Должен ли я разместить мою службу WCF в IIS?
- 8. Где в umbracoSettings.config я должен разместить ResolveUrlsFromTextString?
- 9. Должен ли я назвать все сборки?
- 10. Должен ли я компенсировать все размеры экрана?
- 11. Должен ли я добавить все общедоступные api?
- 12. Должен ли я инициализировать все переменные?
- 13. Должен ли я подписать все банки?
- 14. Должен ли я разместить wp_reset_postdata(); после окончания; или endif; ?
- 15. Должен ли я разместить этот jquery внутри углового контроллера?
- 16. Где я должен разместить свой блок reply_to?
- 17. Внешняя переменная - где я должен ее разместить?
- 18. Android - Где я должен разместить своих слушателей?
- 19. Где я должен разместить свои тесты lib
- 20. Где я должен разместить вспомогательные функции rspec?
- 21. Где я должен разместить это условие?
- 22. Где я должен разместить обработчик формы?
- 23. Где я должен разместить построитель ShowCaseView в этом случае?
- 24. Должен ли я обернуть все параметры метода в класс обертки?
- 25. Должен ли я помещать все компоненты в хранилище?
- 26. Должен ли я регистрировать все компоненты в ngModule?
- 27. Должен ли я поймать все мои исключения в global.asax?
- 28. AngularJS + Gulp - Должен ли я объединить все файлы в одном?
- 29. Должен ли я запускать все в фоновом потоке?
- 30. Должен ли я выполнять все упражнения в K & R?
Ах, это аккуратный трюк. Спасибо – greenimpala
Еще лучше, если код HTML длинный, используйте include() и поместите html-код в два разных файла. – Palantir
Я нахожу, что если youre swtiching in и out из php и htm в блоках управления лучше использовать альтернативный синтаксис, например: ' Php if (condition):?> Html Php else:?> Html Php endif; ?> ' – prodigitalson