За последние 24 часа нас посетили 16789 программистов и 1647 роботов. Сейчас ищут 932 программиста ...

Проблема с порядком построения страницы через require_once

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

  1. demoniqus

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

    С нами с:
    29 мар 2011
    Сообщения:
    34
    Симпатии:
    0
    Я разделил страницу на три части:
    1) header - заголовочная часть

    HTML:
    1.     <head>
    2.         <meta charset="utf-8" />
    3.         <title>mySite.</title>
    4.         <link href="css/main.css" type="text/css" rel="stylesheet"/>
    5. <!--        <link rel="icon" type="image/png" href="pict/subaru.png" />-->
    6.         <script type="text/javascript" src="js/jquery.min.js"></script>
    7.     </head>
    8.     <body>
    9.  
    2) Динамически формируемое тело страницы
    3) footer - нижняя часть страницы
    HTML:
    1.  
    2.     </body>
    3. </html>
    4.  
    и собираю страницу следующим образом
    PHP:
    1. $page = strtolower(trim($_REQUEST[$requiredPageKey] === null ? '' : $_REQUEST[$requiredPageKey] . ''));
    2.             if ($page) {
    3.                 $page = '.' . DIRECTORY_SEPARATOR . 'php' . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR . $page . '_page.php';
    4.                 if(file_exists($page)) {
    5.                     require_once '.' . DIRECTORY_SEPARATOR . 'php' . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR . 'header.php';
    6.                     require_once $page;
    7.                     require_once '.' . DIRECTORY_SEPARATOR . 'php' . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR . 'footer.php';
    8.                 }
    9.             }
    Но по какой-то причине все содержимое тега head оказывается внутри body... IE и Chrome дают одинаковый результат, т.е. это не проблема понимания конкретного браузера. В чем может быть проблема?
     
  2. demoniqus

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

    С нами с:
    29 мар 2011
    Сообщения:
    34
    Симпатии:
    0
    Очень странно... смотрю сейчас полученные данные через отладчик - там всё собрано нормально...
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Это и не может быть проблемой браузера ибо код в него приходит уже сформированный, а формируется он на сервере.
     
  4. demoniqus

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

    С нами с:
    29 мар 2011
    Сообщения:
    34
    Симпатии:
    0
    В общем это не проблема сервера, да и не проблема браузера. Это проблема среды разработки, а точнее Netbeans.
    Я создал блокнотом файл в кодировке utf-8, а редактировал его в Netbeans. При открытии такого файла в Netbeans я вижу этот "маркер utf-8" в самом начале файла. Работая ранее над проектом на Ado.Net я столкнулся с тем, что при удалении данного маркера кодировка сбивается. Поэтому, приступив к проекту на PHP, я данный символ не трогал. Я точно не знаю, что с этим маркером происходит в Netbeans, но из-за него в итоге и происходила вся чехарда. Сейчас я его удалил и всё стало нормально.
    upload_2017-1-26_9-6-2.png

    Несколько лет назад вроде такой проблемы не наблюдалось у Netbeans. А может просто я что-то делал тогда иначе...
     
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Используй кодировку utf-8 без BOM.
    Видимо BOM этот как раз этот загадочный (лично для меня) маркер :)
     
    SamyRed нравится это.
  6. demoniqus

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

    С нами с:
    29 мар 2011
    Сообщения:
    34
    Симпатии:
    0
    В np++ есть и с BOM, и без него, а вот как объяснить это обычному блокноту?))) Да и в Netbeans я не вижу этих перекодировок...
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Обычным блокнотом пользоваться точно не стоит. Я пользуюсь NP++ И ничего другого не знаю. Вроде пока всё устраивает.
    Пользуйся им или другим блокнотом, который может в кодировки.
     
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Вот, оказывается что именно так)) Для меня это тоже было загадкой. А оказывается что это самая обыкновенная точка с несколькими пробелами :D
     
  9. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А ты создавай файлы сразу в нетбинсе. А еще лучше переходи на phpstorm, там есть удаление bom)
     
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @Fell-x27 что такое этот бом и для чего он нужен?
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Фу, кака этот бом. Не знаю зачем он нужен, но у неопытных пользователей всегда с ним проблемы. Особенно когда нужно заголовки отправлять. Это некая сущность, которая создаётся в начале файла, в ней хранятся какие-то заголовки, ещё что-то ХЗ короч.
     
  12. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @SamyRed Ну зачем то же его придумали. Вот это интересно...
     
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Короче, если я правильно понл из прочитанного в вики, то BOM - это обозначение для понимания того, в какой кодировке файл. Только не понятно зачем оно нафиг надо, если скрипты, кодированные без этого BOM тоже вполне правильно работают.
     
  14. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну ребят, ну можно же найти инфу было и почитать.
    --- Добавлено ---
    По сути это костыль, который все никак не отвалится.
     
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну вот я и прочитал что его использование - необязательно. Теперь хрен пойми зачем он вообще нужен, если он необязателен, и без него всё отлично работает.
     
  16. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну вроде как он отвечает за определение кодировки, UTF-8/16/32. НО, в вебе мы кодировку указываем явно и пользуемся только UTF-8, так что нам этот маркер не нужен.
     
  17. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А кому он нужен? В каких случаях, точнее.
     
  18. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В случаях, когда у тебя где-то используется UTF-8/16/32 окромя веба, где нет заголовков, явно сообщающих кодировку, и где, по сути, без BOM-а ты точно не определишь сходу, в какой именно вариации UTF у тебя файл.
     
  19. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Dсё, понял. Значит мне это не грозит, можно забить)