За последние 24 часа нас посетили 22434 программиста и 1030 роботов. Сейчас ищут 600 программистов ...

Правильно ли планирую собирать страницу?

Тема в разделе "PHP для новичков", создана пользователем dobrmir, 4 янв 2018.

  1. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Если создам страницу text-o-vajnom.php с кодом:
    PHP:
    1. require verx.php // шапка страницы
    2. require reklama.php //рекламный код банера
    3. require text.php // основное содержание (текстовая статья)
    4. require chetchik.php // код щётчика-статистики
    5. require niz.php // футер (низ страницы)
    Если reklama.php буду вставлять не в код этой страницы, а в файл шапки verx.php, то так и вставлять require verx.php?

    Нужно ли где то в этих вариантах применять require_once ?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    ну ты ответь сам себе на вопрос, чем require отличается от require_once.
    Если нужно вставить рекламу вверх, вставь рекламу вверх. require буквально включает файл, как если бы ты копипасту сделал руками.
     
  3. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    require_once здесь будет лишним?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Я этого не писал. Я писал, что стоит разобраться, чем require отличается от require_once.
     
  5. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Читал в книге, что require_once, чтобы не вставился два раза require. Если реклама из файла reklama.php вставляется в два места страницы, то надо ли require_once?
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.319
    Адрес:
    Лень
    PHP:
    1. foreach ( ... )
    2. {
    3.     require_once ...;
    4.    
    5.     ...
    6. }
     
  7. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Прошу подсказать, как применять код из предыдущего сообщения.
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Логику включи. Ответ на второй вопрос как бы вытекает из первого предложения, не?
     
    #8 mkramer, 4 янв 2018
    Последнее редактирование: 4 янв 2018
  9. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    хз, есть мнение, что для подключения на страницу всяких там шапок и подвалов можно использовать require и include (разница в том, что в случае невозможности подключения файла require сразу завершит работу сценария, include продолжит с выводом соответствующей ошибки.)
    в php при работе скриптов, создается внутренняя таблица, в которой содержатся имена всех включенных файлов и require_once существует для того, чтобы избежать ошибок, и при подключении одинаковых имен, просто игнорирует подключение.
    Вопрос к знатокам:
    в целом я так понял, что при подключении разных скриптов, в которых, и в том и в том встречается одна функция, ну с одним названием, инструкция с суффиксом _once отработает вполне корректно, не выдаст ошибки переопределения, так???
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Да, для предотвращения двойного объявления функции используется require_once и include_once.
     
    karmay нравится это.
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @dobrmir у вас в принципе не совсем верное представление о том, как нужно собирать страницы. Зачем тратить время на выполнение текста статьи? Сделайте хотя бы так: readfile('database/text-o-vajnom.txt') вместо require text.php. В общем же достаточно одного шаблона на все статьи. Даже если используются множественные точки входа, как у вас, подготовьте/определите все данные для шаблона и в конце подключите файл шаблона (внутри которого можно подключить шапку, подвал и т.п., если они совпадают с таковыми для шаблонов др. типов).
     
    dobrmir нравится это.
  12. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    А если тексты статей будут в папке, то можно ли закрыть доступ на чтение из браузера, если читателю известен путь и имя файла? то есть чтобы читать можно было только текст, выводимый на запланированных страницах?
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.319
    Адрес:
    Лень
    для этого существует бд.
    единая точка входа,
    роутер
    и ядро сайта
    --- Добавлено ---
    а так вы просто учите - как замутить свой велосипед, спотыкаясь и падая то на одном месте то на другом, а по пути еще спомнили, что забыли деньги дома для проезда
    --- Добавлено ---
    шапка футер херутель, все должно содержаться в одном шаблоне template.php

    и туда уже подставляются значения, текст
    --- Добавлено ---
    рекламный блок, календарь, мини херчат - все это называется виджетами, у них отдельный шаблон, которые так же подставляются в темплейт
     
    dobrmir нравится это.
  14. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Код (Text):
    1. и ядро сайта
    Семантическое ядро сайта?
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.319
    Адрес:
    Лень
    мозги так где должны быть мозги, а попа там где должен быть вывод :)
     
  16. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @dobrmir, да можно. Обычно все лишнее, включая данные и шаблоны, размещают за пределами корня сайта. Можно и в пределах, используя для закрытия др. методы, но так надежнее. Если будете размещать в пределах, оставьте у файлов с данными расширение php (не txt) но не выполняйте их, как выше написал.
     
    dobrmir нравится это.
  17. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Ща я вам шаблоны рвать начну. Готовьтесь. При использовании flexbox-layout порядок блоков на странице в пределах одного контейнера не важен. Его можно менять динамически.
     
    mahmuzar нравится это.
  18. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Заменил все require на readfile (2 штуки, выше и ниже текста статей). Точку входа и ядро сайта на этот раз планирую не делать, так как там статичный контент и времени настраивать и изучать дополнительно пока-что нету. К статьям думаю приделать сверху и снизу
    Код (Text):
    1. <?php readfile ($_SERVER["DOCUMENT_ROOT"]."/verx.php"); ?>
    и
    Код (Text):
    1. <?php readfile ($_SERVER["DOCUMENT_ROOT"]."/niz.php"); ?>
    Вот как начинаются страницы статей:
    Код (Text):
    1.  
    2. <?php readfile ($_SERVER["DOCUMENT_ROOT"]."/verx.php"); ?>
    3. <H1>Заголовок одной из страниц в папке)</H1>
    В файле verx.php кроме всего прочего есть тег title, что туда вставить, чтобы считывалось из <H1>Заголовок одной из страниц в папке)</H1> (то есть на разных страницах из папок чтобы выводилось в title, что на этих страницах в заголовке H1).
     
  19. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Пока что прошу не отвечать на предыдущий пост, так как решил кое что сделать по другому.
     
  20. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Ну как обычно... И стоило спрашивать тут, чтобы сделать все наоборот?

    Шапка обычно выполняется, потому что там присутствует title и т.п., а контент нет. h1 обычно находится в шаблоне и видоизменяется динамически точно так же, как и title. Контент вы читаете из отдельного файла, а не размещаете его непосредственно в каждой точке входа, чтобы понапрасну не пытаться исполнять контент. Более-менее правильный порядок я вам описал в пред. посте – сначала определяете данные, потом подключаете шаблон:
    Код (Text):
    1.  
    2. $title='My Page';
    3. $content_filename='filename_or_slug';
    4. // или сразу читаете контент в память:
    5. // $content=file_get_contents('filename');
    6. require('template_filename');
    На это не нужно много времени. Но коли и его нет, делайте тяп-ляп. Окружающим в принципе пофиг.
     
    dobrmir нравится это.