За последние 24 часа нас посетили 30534 программиста и 1813 роботов. Сейчас ищут 817 программистов ...

Как правильно строить сайт?

Тема в разделе "PHP для новичков", создана пользователем jasper, 21 фев 2009.

  1. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    У меня несколько вопросов:
    1. Как правильно строить сайт, а именно, при создании движка, я вывожу всю информацию в единственный index.html, все остальное модули. Модули я подключаю в зависимости от поведения пользователя и посредством query_string, например, если запускают index.html и пользователь не авторизован, и пустая строка query_string подключается и выводится модуль auth.php где соответственно необходимо зарегистрироваться, если завегился и ввел данные отправляется запрос, например, index.html?auth, и проверяются данные, если правильно соответственно, загружается модуль main.php. Так вот вопрос, как правильно строить подключение модулей. я делаю проверку, например в таком виде :
    if(isset($_REQUEST['auth']))
    {
    if(authorization()===true)
    {
    require_once $_SERVER['DOCUMENT_ROOT'].'/html/main.php';
    }
    }
    и таким типом проверяю query_string на предмет поведения пользователя и соответственно подлючаю соответствующие модули.
    Продолжаю вопрос, правильно ли я делаю или есть другой более удобный и подходящий способ.

    2. Вопрос 2, что лучше подлючать все модули сверху файла сразу все, или как написал я выше при определенном срабатывании if.
    3. Как правильно размещать файлы в корневой папке WWW.
    Например, у меня в WWW находятся WWW/mods, WWW/html (это для верстальщика, тут только модули в html кодом), WWW/styles каждая папка закрыта посредством .htaccess deny from all, правильно ли я сделал, или как можно лучше все устроить? Огромное спасибо за ответы.
     
  2. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    учиться, учиться и еще раз учиться....

    помню где-то [vs] выкладывал скрипт авторизации... щас поищем

    вот:
    http://php.ru/forum/viewtopic.php?t=15658
     
  3. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    у меня авторизация практически кк ту что ты мне указал, так же использую сессии и mysql, вопрос не в авторизации, а вообще в построении сайта, интерисуют конкретные вопросы указанные выше.
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    простейшая модульная структура сайта
    PHP:
    1. <?
    2. /*
    3. весь вывод происходит через глобальный буфер result
    4. с ним работают модули, инитер и тд. всё где есть вывод
    5. */
    6. $result=array();
    7. $act=!empty($_GET['act'])?$_GET['act']:false; // получаем переменную с название модуля
    8. include_once "init.php"; // инициализация системы, там заполняем рэсалт буфер всякой байдой типа блока авторизации, меню и пр.
    9. if($act){
    10.   if(file_exists($modulname="moduls/$act.php")){ // папку с модулями лучше закрыть при помощи сервера или константой закрыть сами модули
    11.      include $modulname; // подключаем модуль
    12.   }else{
    13.      $result['error']="Нет такого модуля";
    14.   }
    15. }else{
    16.   include "moduls/default.php"; // дефолтный модуль
    17. }
    18. print_r($result); // готовый буфер в нашем примере просто рапечатываем как массив, на деле будет главный шаблон
    19. ?>
     
  5. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Безобразие. Mr.M.I.T., вам не стыдно?
     
  6. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Существует много способов и единственно правильного не существует, существует оптимальный способ для конкретной ситуации(иногда) :p
    Советую обратить внимание на фреймворки, такие как Symfony, ZF и т.д. Возможно их что-то из их подхода Вам понравится.

    PHP вначале транслирует в байт код Ваш сценарий, если по срабатыванию какого либо условия мы попадаем на require/include/eval он траслирует другие сценарии.

    Соответственно если их все подключать сверху, они будут все каждый раз, если же использовать If будет транслироваться только тот что нужен.

    Классы, библиотеки функций и проч. вещи, которые пользователю не нужны, ИМХО, лучше располагать за каталогом www.
     
  7. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Ну он же сказал простейшая :)
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    скажи спасибо что комментарии написал ;)
     
  9. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    PHP вначале транслирует в байт код Ваш сценарий, если по срабатыванию какого либо условия мы попадаем на require/include/eval он траслирует другие сценарии.

    Соответственно если их все подключать сверху, они будут все каждый раз, если же использовать If будет транслироваться только тот что нужен.

    Классы, библиотеки функций и проч. вещи, которые пользователю не нужны, ИМХО, лучше располагать за каталогом www.[/quote]

    По поводу подключения модулей, я представляю как они подключаются, просто модуль, например, состоит из функции, и если подключить этот модуль сверху, он на исполнение не запустится, а просто подключится как есть, пока не будет вызвана сама это функция. Может понадобиться запустить это вункцию несколько раз, и получается нужно подключать модуль каждый раз когда нужнозапустить функцию? А если подключаем посредством include код будет 2 раза подлючать, что много и не нужно, если посредством require_once то модуль подключится не повторно, а будет подключен тот что уже подключался.

    По поводу расположения папок с модулями: так же понимаю, что ее нет смысла разполагать в папке WWW, а лучше положить на уровень вверх, недоступный пользователю, но ВОПРОС, как тогда к ней обращаться? посредством, $_server['DOCUMENT_ROOT'] не получится, а каждый раз писать фактический полный адрес, не удобно при смене, например сервера, как быть?
     
  10. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Вы так часто меняете сервера для проекта? ИМХО ничего страшного в этом нет.

    Да я это понимаю. Но зачем подключать сверху, например 8 модулей, если на самом деле нужен один? Лишняя трансляция кода = снижение производительности. Если проект мало посещают это не критично, но потом может стать источником небольших неприятностей.

    Вообще если у Вас каждый модуль представляет собой класс/набор классов, то можно просто использовать __autoload, а в начале подключать только то что 100% будет нужно всегда, у меня например, это класс для работы с настройками, с сессиями, и "ядро".
     
  11. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    да не парься и закрой доступ при помощи .htaccess
    так
    Код (Text):
    1. Options -Indexes
    2. Deny from all
     
  12. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2. require($_server['DOCUMENT_ROOT'].'/../supermegaengine/core.php');
    3. ?>
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Она так же будет валидироваться и компилироваться, как и весь сценарий, т.е. занимать место в оперативной памяти и тратить процессорное время ;-) Ну вообще это фигня конечно, но подключение по условию выглядит логичнее.
    Как удобнее. В простешем варианте я бы советовал создать папки service, design, первую - для скриптов, вторую - для дизайна (шаблоны).
     
  14. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    да вот так и делаю :)
     
  15. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    интересно, спасибо за подсказку, попробую
     
  16. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    спасибо, учту, да еще забыл спросить, есть форма <input type="text" name="form[text]">вопрос, в каком виде будет передаваться form[text] в query_string? Хочу сделать ссылку, например, <a href="?form[text]">ссылка</a> Но так не катить , какой синтаксис?
     
  17. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
  18. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    всем спасибо, доперло.
     
  19. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  20. jasper

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

    С нами с:
    21 фев 2009
    Сообщения:
    45
    Симпатии:
    0
    вот оно, то что надо, спасибо!