Нет предыдущего вывода, но перенаправление заголовка не работает в PHP - PullRequest
0 голосов
/ 18 мая 2010
header('Location: ' . $url);

Я проверил, что нет предыдущего вывода:

ob_start();

...
var_dump(ob_get_contents());
ob_flush();
header('Location: ' . $url);

выходы:

string '' (length=0)

Тогда почему происходит сбой перенаправления?

Хотя в error_log я вижу много предупреждений и уведомлений, но это не влияет на header(), если оно ничего не выводит в браузер, верно?

UPDATE

Некоторые журналы (не должны быть связаны между собой):

[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP Deprecated:  Function eregi() is deprecated in D:\\Works\\general
[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://localhost/cookie_usage.php
[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP   1. {main}() D:\\Works\\login.php:0, referer: http://localhost/cookie_usage.php
[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP   2. tep_redirect() D:\\Works\\login.php:33, referer: http://localhost/cookie_usage.php

Ответы [ 3 ]

3 голосов
/ 18 мая 2010

ob_flush () отправляет в выходной буфер. (печатает то, что находится в OB) Это считается выходным. Вы можете использовать ob_clean ()

это также хорошая практика для использования exit () или die () после вызова заголовка ('location ...').

Также обратите внимание, что пробел в конце файла сделает это.

По большей части я больше не использую?> В конце файла PHP, просто оставьте его открытым

?> В любом случае необязательно.

0 голосов
/ 18 мая 2010

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

0 голосов
/ 18 мая 2010

, который не влияет на header () так долго так как он ничего не выводит на браузер, верно?

неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...