За последние 24 часа нас посетили 22479 программистов и 1138 роботов. Сейчас ищут 775 программистов ...

Шаблонизация и переход по прямой ссылке к шаблону

Тема в разделе "PHP для новичков", создана пользователем cylbps, 19 апр 2016.

  1. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    Доброго времени суток! Решил в проекте использовать шаблоны чтобы отделить логику от содержимого. Например в файле main.php(в нем только php содержимое) проверяю был ли залогинен пользователь, если да то подключаю main_tpl.php в котором находится разметка страницы, если нет то переход к login.php. Но возникает вопрос, если перейти по прямой ссылке к main_tpl.php то там тоже надо делать проверку пользователя. Получается масло масляное. Как лучше сделать? Может просто перенести все html в main.php и в начале страницы делать проверку а шаблоны нафиг не нужны? Подскажете, как лучше?
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    так никто не делает уже ((( : твои файлы шаблоны, вообще не должны светиться ни где, даже в url (;
     
  3. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    А их в url и не видно видно только main.php а main_tpl.php инклюдится
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    все запросы на index.php направляй и там парси $_SERVER['REQUEST_URI']
     
  5. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    тоесть если мне надо на main.php сначала на index.php а в нем уже разбираемся, кто залогинен, а кто нет?
    --- Добавлено ---
    А как сейчас делают?
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    igordata уже подсказал ((( :
     
  7. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    Подскажите где можно почитать про данную методику?
     
  8. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    такой методике придерживаются за последние годы любые фрэймворки и цмс ((( :
     
  9. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    А есть на эту тему статьи? Может в книгах каких то информация?
     
  10. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    думаю что есть конеш ((( : возьми на свой вкус систему и разбирай по доке (;
     
  11. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ой, да ладно. Можно и не выпендриваться, а просто в шаблонах защиту от прямого обращения ставить
    PHP:
    1. defined("OK") || die("You are a hacker!");
    И в начале любого файла, который точка входа
    PHP:
    1. define("OK", "OK");
     
  12. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    Спасибо, наталкнул на мысль!
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    если все запросы идут на index.php, то это не требуется.
     
  14. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Всё равно требуется, если всё это хозяйство лежит выше Document Root. Поскольку на index.php идут обычно только запросы несуществующих файлов, чтоб не направлялись туда картинки, стили, скрипты и пр.
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ну статик контент можно через try_files отсеивать. А оставшееся пойдёт на уже на индекс.
     
  16. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    А как правильно перенаправить на index.php?
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а какой веб-сервер?
     
  18. cylbps

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

    С нами с:
    19 апр 2016
    Сообщения:
    16
    Симпатии:
    0
    apache на xampp
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    бери от любой CMS, только часть с передачей урла как гет параметра можно выкинуть, т.к. парсить надо $_SERVER['REQUEST_URI']
     
  20. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Код (Text):
    1.  
    2. RewriteEngine on
    3. # If a directory or a file exists, use the request directly
    4. RewriteCond %{REQUEST_FILENAME} !-f
    5. RewriteCond %{REQUEST_FILENAME} !-d
    6. # Otherwise forward the request to index.php
    7. RewriteRule . index.php
     
  21. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    mkramer звёздочку забыл =)

    RewriteRule .* index.php

    cylbps и да mkramer сказал уже, я напомню, в DOCUMENT_ROOT должен быть только файл на который идут запросы, остальное должно быть вне DOCUMENT_ROOT
     
  22. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ну это уже следующий этап морочки.

    я даже не знаю, зачем так делать, если честно. Расскажите мне плс.
     
  23. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Ну это надо чтоб не писать в каждом файле

    if(!defined('INSIDE_APP')) die('Access denied');

    который мы хотим сделать недоступным для прямого вызова
    А пхп-машина всёравно сможет подключить все файлы которые нужны
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а зачем вообще так писать?
     
  25. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Ну так на всякий случай, например в phpbb во всех файлах такое написано. Мало ли вдруг у тебя будет файл к примеру в котором в чистом виде написано mysqli_query("INSERT INTO Users VALUES 'admin' 'admin'"); Кто нибудь начнёт вызывать этот файл. И будут добавляться админы.
    Это необязательное вещи. Поэтому их можно не писать, и многие их не пишут.
     
    #25 machetero, 20 апр 2016
    Последнее редактирование: 20 апр 2016