вызов заголовка () время от времени терпит неудачу с «заголовок уже отправлен» - PullRequest
0 голосов
/ 30 января 2012

У меня есть стабильный php-код на моем сайте в файле findRecords.php, как показано ниже:

 // inside findRecords.php....
<HTML>  
<head>
<?php 
include 'titleBar.php';
include 'topNavigationBar.php';
?>    
</head> 
require 'varsAndStatics.php'; // variables and statics used throughout

// other html in findRecords.php not shown here for brevity.....

Внутри моего topNavigationBar.php я вывожу HTML-код для навигации по каждой странице.бар, вдоль строк:

<div class="pageTopRowContainerLabel">
    <a class="pageTopRowTextStyle" 
       href="http://localhost/myProj/index.php">HOME</a>
</div>   
  // more nav bar divs not shown....

Внутри findRecords.php Я делаю простой поиск в базе данных и получаю некоторые записи и намерен отобразить эти записи в браузере, используя header() для переключения на другойстраница, которая отображает эти записи (showRecords.php).

Если вы заметили выше, вы можете увидеть выше, что в findRecords.php заголовок html уже был отправлен с некоторыми html div, используемыми для отображения моей панели навигации, с помощью оператора include 'topNavigationBar.php'.

Затем у меня есть вызов header () внутри этого же файла findRecords.php для реализации Post / Redirect / Get:

header("Location: http://localhost/myProj/showRecords.php", true, 303);

Вышеописанное работает отлично. После нахождения записей в базе данных я header() перешел на showRecords.php для их отображения.

Хорошо, теперь я просто добавил heredoc в varsAndStatics.php, который был включен все выше в findRecords.php (смотри выше).Теперь я добавляю следующий heredoc к долговременному стабильному файлу varsAndStatics.php:

echo <<<_RIDOFWHITESPACE
<br />
<script type="text/javascript">

function ridOfWhiteSpace(theFormElementFieldValue, bLtrsOnly, bLtrsNumsOnly)
{

   //  Remove whitespace
   if(theFormElementFieldValue.indexOf(" ")!=-1) 
   {
      var doozh = theFormElementFieldValue.split(" ").join("");
      theFormElementFieldValue = doozh;
   }
   return theFormElementFieldValue;
}
</script>
_RIDOFWHITESPACE;

Теперь мой вызов на header() выше в f indRecords.php прерывается с Заголовком, уже отправленным ошибка.

Я не знаю, почему heredoc сломал этот стабильный код.ПОСЛЕ ВСЕГО - этот вызов header() и штрих-код навигационной системы были там некоторое время!

Я говорю следующее: страница, отправленная findRecords.php, отправляет элементы навигационной панели из-заinclude topNavigationBar.php - и затем я вызываю header() - , что код работал довольно долго.

По моему мнению, потому что был отправлен вывод вбраузер (topNavigationBar.php div), когда я вызываю header() в старом стабильном коде, добавление heredoc() в varsAndStatics.php не должно нарушать код.

Есть ли тонкость, которую я здесь упускаю?

Ответы [ 2 ]

1 голос
/ 30 января 2012

Кажется, что во время этих тестов настройка output_buffering изменилась как-то.

Внутри findRecords.php Я выполняю простой поиск в базе данных, получаю некоторые записи и намереваюсь отобразить эти записи в браузере, используя header(), чтобы переключиться на другую страницу, которая отображает эти записи (showRecords.php).

Не вижу в этом смысла. Почему вы не можете направить пользователя уже на showRecords.php? Или просто включить без перенаправлений?

0 голосов
/ 31 января 2012

До сих пор не видел объяснения, почему header () работал неделями, несмотря на тот факт, что все это время findRecord.php отправлял html моей навигационной панели с заголовком html, и мой вызов header () работал простохорошо.Просто предположение от некоторых людей здесь - без ответа.Я провел прошлый день, просматривая код, html и div для панели навигации в верхней части страницы, после чего вызов header () работал отлично.Затем, как только я откомментирую heredoc, я получаю предупреждение «заголовок уже отправлен», когда встречается вызов header () (который был там, работает нормально, в течение нескольких недель).

Там ничего нетмой код, который я вижу, чтобы объяснить, почему вызов header () работал нормально в последние недели после отправки HTML-кода навигационной панели.Пожалуйста, не добавляйте больше спекуляций на мой вопрос!Если вы не знаете ответ, не загромождайте этот вопрос БОЛЬШЕ.Делать SWAGS (глупые догадки с дикими угадываниями) вроде «кажется, что настройки выходного фуршета как-то изменились во время этих тестов» - это множество уровней догадок и бесполезно.

Я выясню, почему мои выходные данные html панели навигации и вызов header () работают нормально и почему они ломаются при добавлении heredoc, а затем опубликуем его здесь.

...