За последние 24 часа нас посетили 16389 программистов и 1529 роботов. Сейчас ищут 796 программистов ...

require не направляет

Тема в разделе "PHP для новичков", создана пользователем DJTIMOHA, 3 июл 2017.

  1. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Здравствуйте, у меня есть проблема с кодом php с которым я уже долгое время не могу совладать.
    У меня такой код
    PHP:
    1. require('top.php');
    2. echo 'Страница видна';
    3. header("location: index.php");
    При этом переход на index.php не происходит. Я понимаю что ошибка где то в top.php но найти я её не могу.
    Обращался в различные форумы, но там не могут мне помочь.
    Смогли бы вы мне помочь с данной проблемой?
    Прикреплю архив с двумя php файлами index и top.
     

    Вложения:

    • top.zip
      Размер файла:
      3,5 КБ
      Просмотров:
      3
  2. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    прочитайте документацию по header(). Перед ней ничего не должно выводится на экран.
    --- Добавлено ---
    точнее даже в браузер ничего не должно отправляться (ни одного html-тега, ни одного символа)
     
  3. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    А можно другими средствами header() заменить?
     
  4. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    незнаю.. дело в том, что редирект осуществляется в заголовке страницы... так что врятли... а какой смысл выводить что то до редиректа?? это бессмыслица.
    --- Добавлено ---
    можно с помощью js помоему сделать.. но еще раз спрошу, зачем выводить что то до редиректа?
     
  5. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    У меня в require('top.php'); вся шапка сайта.
    А перед header("location: index.php"); у меня идёт код вносящий БД данные.
    Кстати на хостингере у меня всё нормально работало, переехал хостимэн вот тут и началось
     
  6. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    Так нафига шапка??? Все равно ж будет редирект. Если чесно, понятия не имею, как могло такое работать...
     
  7. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Я понял что это плохая была идея. Огорчило что я сайт писал почти год весом 200 мгб только на пхп страницы и при этом у меня везде используется этот грёбаный header :(
    --- Добавлено ---
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.820
    Симпатии:
    1.333
    Адрес:
    Лень
  9. DJTIMOHA

    DJTIMOHA Активный пользователь

    С нами с:
    5 апр 2015
    Сообщения:
    109
    Симпатии:
    2
    Проблему решил так
    Код (Text):
    1. ?>
    2. <script>document.location.href='gb.php';</script>
    3. <?
    Это не безопасно?
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Вангую, что на хостингере в конфигах php прописан автоматический запуск буферизации вывода. А на хостимэне нет.
    Я уже говорил как-то, что руками отправлять буфер не обязательно. Буферы вывода автоматически схлопываются и отправляются клиенту по завершению скрипта. Независимо от их вложенности даже.

    По факту, достаточно одного единственного ob_start() в начале и все, головняк ушел. Но только если нам не надо ничего стриммить, или отправлять какие-то большие пачки данных. Тогда головняк пришел и буферы перед этим нужно выпиливать:)
    --- Добавлено ---
    Это костыльно :) Но прокатит, да. Но проще тупо поставить ob_start() в начале кода и забыть о проблемах.