Я появился для теста 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!!"; ?>
должен сделать трюк