Intereting Posts
Возможная ошибка: значения таблиц API-интерфейсов Facebook отображаются с десятичными точками raw pthread Объекты темы восстанавливают свое состояние Какое регулярное выражение используется для преобразования этой строки в массив? Использование и обработка токенов PHP-форм Как настроить nginx для обслуживания приложения Django и сайта WordPress? Как проверить Google reCaptcha в форме Submit Используя PHP, как я могу проверить строку для шаблона, а затем изменить ее? Fecebook Messenger Bot на PHP не всегда отвечает пользователю Codeigniter – объединение трех таблиц в правильный формат просмотра Должны ли мы дезинфицировать $ _FILES ? Сопоставьте первое слово, а затем удалите его из строки с помощью PHP Запрос laravel возвращает странный порядок Использование переменной из другого условия в PHP Не удается подключиться к MySQL на Live с Laravel 5 Простая функция PHP и путаница переменных

Интервью Вопрос: Может ли быть эхо перед заголовком?

Я появился для теста php, их задали один вопрос, на который я не мог найти ответ.

Вопрос такой.

echo "MESSI is injured!!"; header("Location:somepage.php"); 

Интервьюер хочет, чтобы заголовок и эхо записывались на одной странице.

Интересно, как это возможно. Это должно дать некоторую ошибку, как

заголовки уже отправлены (вывод начался с …..

Действительно ли можно писать эхо и заголовок на одной странице!

Вы можете использовать буферизацию вывода как

 ob_start(); echo "MESSI is injured!!"; header("Location:somepage.php"); ob_end_flush(); 

Проблема в том, что мы не можем отправить заголовок после начала отправки вывода. Для этого мы буферизируем вывод. Функция ob_start включает буферизацию вывода. В то время как буферизация вывода активна, никакой вывод не отправляется из сценария (кроме заголовков), вместо этого вывод сохраняется во внутреннем буфере. Таким образом, выход echo будет буферизирован. Затем мы отправляем заголовок без каких-либо проблем, поскольку мы еще не выплюнули какой-либо вывод. Наконец, мы вызываем ob_end_flush чтобы очистить содержимое внутреннего буфера и остановить буферизацию вывода.

Вы можете сделать это до тех пор, пока все вызовы заголовков появятся перед отправкой любого результата без заголовка (это включает в себя такие вещи, как перенос строк / пробелы). Так

 <?php header("Location:somepage.php"); echo "MESSI is injured!!"; ?> 

должен сделать трюк