Здравствуйте, у меня есть проблема с кодом php с которым я уже долгое время не могу совладать. У меня такой код PHP: require('top.php'); echo 'Страница видна'; header("location: index.php"); При этом переход на index.php не происходит. Я понимаю что ошибка где то в top.php но найти я её не могу. Обращался в различные форумы, но там не могут мне помочь. Смогли бы вы мне помочь с данной проблемой? Прикреплю архив с двумя php файлами index и top.
прочитайте документацию по header(). Перед ней ничего не должно выводится на экран. --- Добавлено --- точнее даже в браузер ничего не должно отправляться (ни одного html-тега, ни одного символа)
незнаю.. дело в том, что редирект осуществляется в заголовке страницы... так что врятли... а какой смысл выводить что то до редиректа?? это бессмыслица. --- Добавлено --- можно с помощью js помоему сделать.. но еще раз спрошу, зачем выводить что то до редиректа?
У меня в require('top.php'); вся шапка сайта. А перед header("location: index.php"); у меня идёт код вносящий БД данные. Кстати на хостингере у меня всё нормально работало, переехал хостимэн вот тут и началось
Так нафига шапка??? Все равно ж будет редирект. Если чесно, понятия не имею, как могло такое работать...
Я понял что это плохая была идея. Огорчило что я сайт писал почти год весом 200 мгб только на пхп страницы и при этом у меня везде используется этот грёбаный header --- Добавлено ---
самый "афуфенный" способ в index.php PHP: <?php ob_start (); место ?> PHP: $OB = ob_get_contents (); ob_end_clean (); echo $OB; там где header ( ... ) PHP: header ( ... ); exit;
Проблему решил так Код (Text): ?> <script>document.location.href='gb.php';</script> <? Это не безопасно?
Вангую, что на хостингере в конфигах php прописан автоматический запуск буферизации вывода. А на хостимэне нет. Я уже говорил как-то, что руками отправлять буфер не обязательно. Буферы вывода автоматически схлопываются и отправляются клиенту по завершению скрипта. Независимо от их вложенности даже. По факту, достаточно одного единственного ob_start() в начале и все, головняк ушел. Но только если нам не надо ничего стриммить, или отправлять какие-то большие пачки данных. Тогда головняк пришел и буферы перед этим нужно выпиливать --- Добавлено --- Это костыльно Но прокатит, да. Но проще тупо поставить ob_start() в начале кода и забыть о проблемах.