Белый экран вместо редиректа — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «Часто возникает ситуация, когда при выполнении редиректа с помощью метода системы '''redirect($…») |
VITL' (обсуждение | вклад) |
||
Строка 14: | Строка 14: | ||
'127.0.0.1' – тут укажите IP-адрес вашего компьютера. При выполнении метода redirect, если заголовки уже отправлены, будет указано в каком файле это было сделано и на какой строке. | '127.0.0.1' – тут укажите IP-адрес вашего компьютера. При выполнении метода redirect, если заголовки уже отправлены, будет указано в каком файле это было сделано и на какой строке. | ||
+ | |||
+ | [[Категория: API]] |
Текущая версия на 04:52, 29 ноября 2011
Часто возникает ситуация, когда при выполнении редиректа с помощью метода системы redirect($url), класс def_module, в браузере появляется белый экран, а FireBug показывает в "Ответе" время генерации страницы:
<!-- This page generated in 0.152338 secs -->
В данном случае, скорее всего проблема в том, что где-то в кастомном php-файле, или tpl-шаблоне, или еще где-то поставлен лишний перенос строки, и в текущий буфер отправляются какие-то данные, из-за этого не могут записаться заголовки для редиректа и он в итоге не происходит. Для отслеживания в каком файле проблема, можно воспользоваться php-методом headers_sent. В файле classes/modules/def_module.php, в методе redirect, в начале метода можно поставить такие строки:
if($_SERVER['REMOTE_ADDR'] == '127.0.0.1'){
if (headers_sent($filename, $linenum)) {
echo "Заголовки уже отправлены в $filename на строке $linenum. Редирект невозможен.";
exit;
}
}
'127.0.0.1' – тут укажите IP-адрес вашего компьютера. При выполнении метода redirect, если заголовки уже отправлены, будет указано в каком файле это было сделано и на какой строке.