Функция перенаправления Php - PullRequest
3 голосов
/ 19 августа 2011

У меня есть функция redirect_to (), написанная на php-скрипте, которая вызывается после успешного обновления страницы в моей пользовательской CMS. Он отлично работает на локальном хосте, но когда я пробую его на моем реальном домене, я получаю следующее сообщение об ошибке:

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /hermes/bosweb/web119/b1192/ipg.typaldosnetcom/edit_listing.php:7) в /hermes/bosweb/web119/b1192/ipg.typaldosnetcomcom /include/functions.php в строке 20

Вот код для функции redirect_to ():

function redirect_to ($location = NULL) {
    if ($location != NULL) {
        header("Location: {$location}");
        exit;
    }
}

Я убедился, что вызвал функцию, прежде чем выводить какой-либо HTML, поэтому я не уверен, в чем проблема на самом деле.

Мой вопрос: Почему я получаю эту ошибку?

Ответы [ 6 ]

2 голосов
/ 19 августа 2011

Это не вранье.Вы что-то выводили, прежде чем дойти до этой точки.Проверьте местоположения, указанные в сообщениях об ошибках.

Покажите нам первые 25 строк каждого из упомянутых файлов.

1 голос
/ 19 августа 2011

вы уже отправили свой вывод на страницу, прежде чем установить заголовок. сначала вам нужно установить заголовки, а затем получить результат.

Это может быть даже пробел.

0 голосов
/ 19 августа 2011

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

0 голосов
/ 19 августа 2011

Использование буферизации вывода:

<?php 
ob_start();

// Test buffered output. 
echo 'hello world'; 

function redirect_to ($location = NULL) {
    if ($location != NULL) {
        header('Location: ' . $location);
        exit;
    }
}

// rest of php file here

ob_end_flush();
?>

Документы: ob_start () и ob_end_flush ()

0 голосов
/ 19 августа 2011

Одной из распространенных причин является наличие строки после включаемого вами php-файла ...

Простое решение: удалите закрывающий тег php "?>" Из всех файлов, так как он не нужен ..

0 голосов
/ 19 августа 2011

Это означает, что что-то уже было выведено в предложенной строке. Попробуйте пойти туда и посмотреть, что он делает.

Попробуйте вставить окружающий код в эту позицию для лучшего понимания, если вы сами не можете найти проблему.

...