Структура php сайта – PHP

Структура сайта. что, где и как должно работать? — Хабр Q&A

Добрый вечер! Помогите, пожалуйста, разобраться как павильно сделать структуру сайта. Не судите строго, я только недавно начала изучать и многого не знаю.
Сейчас он выглядит так(верстка будет дорабатываться), на данный момент он делает все то, что я хотел.

Можно посмотреть новости по категориям, прочитать полностью, зарегистрироваться и оставить комментарий, администратор может добавлять новости и категории которые сразу появятся на сайте. Но, происходит это с достаточно большой задержкой(как для такой верстки). Я понимаю, что это из за сплошного ХАОСА в файлах. Что у меня происходит можете лицезреть ниже. Это все файлы нужны для работы сайта в данном виде.

Макет содержит 3 страницы, 1 - это главная index.php, 2 - это новость полностью и 3 - это страница для админа с добавлением новостей и тп.

Работает это так. Есть некий index.php который с помощью require_once покдлючает header и тп. Если с страници есть какойто запрос он отправляеться в соответсвующий файл в папке scripts где в свою очередь файл(скрипт) снова require_once файл класса и что то там делает, и возвращается обратно на страницу.
Пример "скрипта".

Вопрос состоит в том как правильно должна виглядеть структура сайта, что и !!!КАК!!! должно между собой работать?
Как пхп должен отображать(как я сейчас делаю на скрине ниже) html код, сколько php должен содержать html код?
Если использую php в html, то как лучше, подгружать файл с кодом php или писать непосредственно в html?
Как правильно загружать разные части сайта типу header или footer?
и т.д.
Читал, видел паттерн MVC, но на данный момент не особо разобрался в нем. И так же интересно есть ли какие-то гласные/негласные правила проектирования сайтов, другие варианты кроме CMS и MVC?
P.S. Если ваш аргумент за MVC, будьте так любезны, оставьте ссылку на хороший туториал о нем.(уже читал habrahabr.ru/post/150267 )
И еще 1 вопрос, данную часть кода я использую для проверки авторизации и соотвественно для вывода нужных блоков html. Находиться он в html-файле с версткой. Как правильней сделать такую проверку, что б от результата зависело отображение нужных блоков?
<?php if (isset($_SESSION['user_id'])) {
       echo  "<div class=exit>
                <form name=logout method=POST action=/php/scripts/destroy.php>
                    <button type=submit>Log out</button>
                </form>
            </div>";
            if ($_SESSION['role'] == 1) {
                echo "<button class=admin><a href=admin.php>Админка</a></button>";
            }
    } else {
       
             echo "<div class=vxod>
            <form name=authentication method=POST action=/php/scripts/authentication.php>
                <input type=text name=login placeholder=LOGIN>
                <input type=password name=password>
                <!--<p><input type=checkbox name=remember>Remember me</p>-->
                <input type=submit value=Войти>
            </form>
            </div>        
            <div class=reg>
            <button><a href=html/registration.html>Регистрация</a>
            </button></div>";
    }
?>

Извините за такое количество текста. И огромное спасибо тем, кто откликнется.

toster.ru

Ядро, структура сайта, MVC

Дополнение к уроку:

MVC - Модель, Вид (представление), Контроллер. Правила следующие:
- В Модели и Контроллере отсутствует вывод информации на экран.
- В Виде мы допускаем PHP в размере необходимом для вывода информации на экран. То есть это будут условные конструкции, циклы, сопутствующие функции обработки вроде htmlspecialchars (о котором будет в следующих уроках).
У нас есть код, не читай ответа ниже ответьте как разделить его:
$x = 1;
echo $x;

Ответ очень прост, первую часть мы помещаем в наш контроллер, а вторую в вид.

Наш сайт делится на разделы (Модули, - это не модели!), а внутри разделов страницы. Разделы - это объединённые по смыслу и общему контенту нескольких страниц сайта. Хочу заметить, что в разделе может быть и одна лишь страница. Если мы создаём модуль "новости", то у нас будут страницы: вывод свежих новостей, вывод всех новостей, страница для чтения определённой новости. Если у нас игра, то это отдельный модуль game, в котором присутствуют 2 страницы: главная страница с игрой, и страница с gameover.
В каждом модуле есть основная (главная) страница и называется main , в ней находится код по открытию раздела. В модуле GAME главной страницей будет игра, а вывод результатов как дополнительная страница. Главная страница main, значит у нас создаются main.php и main.tpl в папке модуля game (в случае рассмотрения раздела сайта game).

Давайте на примере GAME рассмотрим какие файлы мы должны создать:
1) Папки модуля GAME:
/modules/game/
/skins/default/game/

2) Игра состоит из двух страниц: битва и результат, значит мы создаём main.php и gameover.php
/modules/game/main.php
/skins/default/game/main.tpl

/modules/game/gameover.php
/skins/default/game/gameover.tpl

3) В адресной строке открываем главную страницу БЕЗ УКАЗАНИЯ page=main , потому что если мы не укажем page=main, он определится автоматически в файле variables.php . Итого мы получаем 2 страницы:
/index.php?module=game
/index.php?module=game&page=gameover

4) Чтобы работал модуль, его необходимо прописать в variables.php в переменной допустимых модулей. Страницы мы не прописываем, так как это будет тема отдельного урока.

Сама суть разделов очень простая, сгруппировать и упростить работу с нашим кодом, согласитесь, ведь когда надо поработать с разделом "игра" мы не будем перебирать сотни файлов в поисках нужных, мы всегда знаем, что вся игра полностью находится в папке модуля game.

Ещё одна ошибка учеников - если форма авторизации находится на главной странице, то обработчик формы должен быть в index.php или variables.php. Это не так. Авторизация и кнопка выхода относятся к разделу (модулю) cab (кабинет) или user (пользователь) или login. Называйте как хотите, но суть остаётся прежней, именно в этом модуле должен располагаться код авторизации и код выхода в разных файлах. Чтобы форма отправляла данные на указанную страницу модуля достаточно в теге FORM для атрибута action указать путь к этой странице на примере авторизации:

<form action="/index.php?module=cab&page=auth" method="post">

С exit ещё проще, так как не надо никаких данных заполнять, а достаточно переправить пользователя на отдельную страницу, то мы пишем обычной ссылкой:
<a href="/index.php?module=cab&page=exit">Выход</a>

В архивы самые внимательные заметили, что index.php в конце не закрывает PHP блок, так же он не закрыт в variables, и в .php файлах в модулях. Это сделано умышленно и именно так надо писать .php файлы все. Закрываем PHP блок только в том случае, когда следом идёт вывод HTML в этом же ФАЙЛЕ.

Под каждым уроком есть 10 тестов, которые помогут Вам закрепить пройденный материал.
Один из тестов будет развивать Вашу логику и интеллект!
Чтобы получить доступ к тестам - авторизируйтесь!

Тесты урока:

Приступить к тесту

{"147":{"id":"147","lesson":"17","type":"yesno","title":"","text":"index.php - единая точка входа, в которой прописаны все настройки? index.tpl - единый файл-шаблон, в котором прописан head, шапка и подвал сайта. Верно?","answer_type":"Int","answer":"0","variables":{"0":""},"group":"lvl1","course":"2"},"148":{"id":"148","lesson":"17","type":"yesno","title":"","text":"Надо ли писать error_reporting в каждой странице модуля?","answer_type":"Int","answer":"1","variables":{"0":""},"group":"lvl1","course":"2"},"149":{"id":"149","lesson":"17","type":"yesno","title":"","text":"Надо ли в каждой странице модуля (main.tpl, contacts.tpl) прописывать шапку сайта, подвал и т.д. зная, что это же продублировано в index.tpl?","answer_type":"Int","answer":"1","variables":{"0":""},"group":"lvl1","course":"2"},"150":{"id":"150","lesson":"17","type":"yesno","title":"","text":"Чтобы избежать дублирования мы подключаем index.tpl с содержанием шапки и футера внутри наших страницах модуля (main.tpl, contacts.tpl)?","answer_type":"Int","answer":"1","variables":{"0":""},"group":"lvl1","course":"2"},"151":{"id":"151","lesson":"17","type":"radio","title":"","text":"Укажите неправильное описание структуры нашего сайта:","answer_type":"Int","answer":"2","variables":{"0":"В папке libs будут храниться наши функции сайта, а в папке config - настройки сайта","1":"Файл index.php - главное ядро сайта, которое распределяет работу сайта, а variables.php - страница по работе с переменными нашего сайта (модернизация и обработка)","2":"Выполняя домашку и расширяя наш сайт мы должны отредактировать variables.php указав новые модули и страницы, а так же index.php указав подключение новых файлов вроде авторизации","3":"Все утверждения правильные"},"group":"lvl1","course":"2"},"152":{"id":"152","lesson":"17","type":"radio","title":"","text":"Что является грамотной структурой страницы-модуля согласно нашего движка:","answer_type":"Int","answer":"0","variables":{"0":"Определённый раздел сайта выделяем в модуль, в котором размещаем страницы модуля","1":"Модули только для очень значимого функционала, остальное размещается в static","2":"Модуль разделяется на Вид, Контроллер и Модель (MVC)","3":"В skins мы размещаем контроллер, а в папке modules - ВИД"},"group":"lvl1","course":"2"},"153":{"id":"153","lesson":"17","type":"input","title":"","text":"Укажите имена файлов с расширениями через запятую для главной страницы модуля. Указать надо: имя Контроллера,имя Вида. Без пробела","answer_type":"Full","answer":"main.php,main.tpl","variables":{"0":""},"group":"lvl1","course":"2"},"154":{"id":"154","lesson":"17","type":"input","title":"","text":"Введя в браузере site.ru\/index.php?module=game у меня запустится обрабатываться скрипт. Укажите ВСЕ пути файлов участвующие в обработке данной страницы с расширением .php и .tpl в порядке их обработки PHP-интерпретатором через запятую и без пробелов между запятыми. Напоминаю, что правильный полный путь для index.php: .\/index.php, а для default.php - .\/libs\/default.php","answer_type":"Full","answer":".\/index.php,.\/config.php,.\/libs\/default.php,.\/variables.php,.\/modules\/game\/main.php,.\/skins\/default\/index.tpl,.\/skins\/default\/game\/main.tpl","variables":{"0":""},"group":"lvl1","course":"2"},"155":{"id":"155","lesson":"17","type":"yesno","title":"","text":"В index.php у нас находится управляющее ядро сайта, которое говорит какие файлы необходимо подключить и в каком порядке. Достаточно ли у Вас знаний сейчас вносить правки в этот файл?","answer_type":"Int","answer":"1","variables":{"0":""},"group":"lvl1","course":"2"},"156":{"id":"156","lesson":"17","type":"radio","title":"","text":"Какое из утверждений ошибочное:","answer_type":"Int","answer":"1","variables":{"0":"В Controller отсутствует вывод информации на экран","1":"В View отсутствует PHP код","2":"В Model не желателен вывод информации на экран и он работает по принципу функций","3":"В View допустимо использовать вспомогательные PHP конструкции с целью - вывести информацию на экран"},"group":"lvl1","course":"2"}}

{"0":"147","1":"148","2":"149","3":"150","4":"151","5":"152","6":"153","7":"154","8":"155","9":"156"}

school-php.com

Сайт на PHP — это просто

Давайте обсудим самостоятельное создание сайта на PHP. Но прежде всего о том, что нам потребуется:

  • Некоторое представление о HTML (см. уроки html для начинающих)
  • Некоторое, хотя бы начальное понимание PHP
  • Интерпретатор PHP, установленный на локальный компьютер, или же хостинг с поддержкой PHP. Без этого пункта создание сайта php невозможно.

Какие основные отличия сайт на PHP от сайта на чистом HTML?

По большому счету созданный на PHP сайт очень мало чем отличается от сайта, созданного с использованием исключительно HTML. Основное отличие между ними заключается в том, что сайт на PHP более гибок в настройке и управлении, а также обладает широким функционалом по автоматизации своей работы.

В качестве простого примера можно привести следующую ситуацию — нам потребовалось в шапке сайта исправить одно слово. Когда сайт основан исключительно на HTML, то для решения данной задачи придется исправить каждый файл сайта. Если сайт состоит всего из одной страницы, то это не вызывает особых затруднений, но если в составе сайта 100 html-страниц, то задача становится весьма трудоемкой и время затратной. А если таких страниц больше 1000? Если же сайт на PHP, и шапка реализована как подключаемый компонент, то потребуется сделать изменения только одного файла, и они автоматически отразятся на всех страницах сайта.

Типичная структура php сайта:

Теперь давайте рассмотрим код основного шаблона сайта на PHP. Следует обратить внимание, что файлы, содержащие php код должны иметь расширение .php. Это не обязательное требование, но будет лучше, если вы будете поступать именно так. Тогда меньше будет путаницы.

Код центрального файла index.php может иметь следующий вид:

<html>
<head>
   <title>Название страницы</title>
   <?php
      require_once $_SERVER['DOCUMENT_ROOT'].'/head.php';
   ?>
</head>

<body>
   <div>
      <?php
         require_once $_SERVER['DOCUMENT_ROOT'].'/top.php';
      ?>
   </div>
   <div>
      <div>
         <?php
            require_once $_SERVER['DOCUMENT_ROOT'].'/sidebar1.php';
         ?>
      </div>
      <div>
         ... Основная часть сайта...
      </div>
      <div>
         <?php
            require_once $_SERVER['DOCUMENT_ROOT'].'/sidebar2.php';
         ?>
      </div>
      <div>
         <?php
            require_once $_SERVER['DOCUMENT_ROOT'].'/footer.php';
         ?>
      </div>
   </div>
</body>
</html>

Как видно из примера, базовая страница состоит из ряда подключаемых файлов: head.php, top.php, sidebar1.php, sidebar2.php, footer.php. Подключение осуществляется при помощи специальной функции PHP:


require_once <полный путь/имя файла>

При этом из названий файлов видно, за какой именно элемент страницы отвечает данный файл. Кстати, подключить таким образом можно сколько угодно файлов.

Примерно так и выглядит простейший сайт на PHP. Здесь не используется база данных. По сути это несколько усовершенствованный html сайт, однако даже такой простой сайт на PHP обладает массой потенциала, которого нет в аналогичном сайте на чистом HTML.

msiter.ru

PHP: пример простого сайта

Как создать самый простой сайт на php, с чего начать и как собственно выглядит сайт?

Первичный шаблон: HTML + CSS

Будем считать, что у Вас уже получилось верстать обычные статичные страницы, и Вы можете набросать что-то очень красивое между тегами html. И это уже на самом деле практически сайт. Но нам все равно нужен php — и вот почему

Статичные страницы (HTML)Динамические страницы (PHP)
Каждая страница — реальный файлСтраницы можно делать однотипными
Необходимо дублировать часть кода
(например главное меню сайта)
Дублирующиеся части кода выносим в отдельный файл
(главное меню достаточно обновить один раз)
Обновлять можно только изменением непосредственно файловОбновлять можно через отдельные структуры (файловую или обычную базу данных)

Первая страница

Приведем очень упрощенную схему верстки index.html

<html>
 <head>
  <title>PHP: пример простого сайта</title>
 </head>
 <body>
   Наш самый простой сайт
 </body>
</html>

Он очень легко становиться обычным php файлом — index.php

<?php 
 $title = 'PHP: пример простого сайта';
 $body  = ' Наш самый простой сайт';
?>
<html>
 <head>
  <title><?php echo $title;?></title>
 </head>
 <body>
  <?php echo $body;?>
 </body>
</html>

Как из одной страницы сделать много (много страниц собственно это и есть простой сайт)

Теперь мы можем еще усложнить структуру — из одной страницы сделать собственно сайт. Для этого сделаем простейший массив страниц (можно потом использовать любую базу данных), где обозначим индексами номера объектов, которые нужно показывать. Навигация собственно говоря может быть также построенна автоматически по циклу, но тут мы опять таки показываем максимально простое решение.

<?php 
 $pages = array(
   0 => array('title' => 'Первая страница', 'body' => 'Первый текст'),
   1 => array('title' => 'Вторая страница', 'body' => 'Второй текст')
 );
 $page_id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0; //возьмем номер из запроса
 if (!isset($pages[$page_id])) $page_id = 0; //проверим что такая страница есть - если нет - 0 по умолчанию
 $page  = $pages[$page_id]; 
?>
<html>
 <head>
  <title><?php echo $page['title'];?></title>
 </head>
 <body>
  <a href="?id=0">Главная</a>
  <a href="?id=1">Вторая</a>
  <?php echo $page['body'];?>
 </body>
</html>

Оставить комментарий

turtus.kiev.ua

Пример динамического сайта на PHP — сайт на PHP своими руками

Самый простой пример динамического сайта на PHP, это проще, чем кажется изначально.

Данный урок покажет пример простого динамического сайта на PHP. В верстке такого сайта особых трудностей нет, нужно только внимательно изучить примеры и для надежности, прочитать статью о том, что нужно для верстки динамического сайта.

Данный пример шаблона работает без баз данных MSQL, но это решается в процессе разработки, а на данном этапе все написано на HTML и PHP. В дальнейшем будет показан пример более сложного шаблона, а пока остановимся на простом, которого вполне достаточно, для создания отличного сайта.

Если вам нужно создать и раскрутить сайт под заказ, то следует обратиться в проверенную веб студию по раскрутке сайта.

Для начала, нужно узнать и понять различия динамики от простого html сайта, который описан в прошлом уроке и на основе которого будет построен данный проект. Так что желательно изучить создание простого сайта, тогда очень легко будет разобраться в данной статье.

А отличие от простого сайта заключается именно в быстроте обслуживания! Кто уже знаком с простым HTML сайтом, тот знает, что для смены баннера, нужно перелопатить сайт полностью, каждую страницу… Что занимает очень много времени. А в динамическом — все можно сделать за несколько минут, не зависимо от того, сколько страниц у сайта, хоть 1000, на время редактирования это не влияет! Думаю даже этого достаточно, для того чтобы изучить данный пример!

Для примера будет взят шаблон сайта, написанный с применением тега <div&gt . На мой взгляд, такой шаблон намного прогрессивней за написанный только на таблицах (имеется в виду каркас сайта). Внутри такого шаблона можно применять и таблицы и почти все известные методы верстки.

И так, посмотрите на пример страницы обычного шаблона, которую будем резать на отдельные файлы.

<br /><br />
<html><br /><br />
<head></head><br /><br />
<body></p><br />
<div id=»wrapper»><br />
<!— начало хедера —></p><br />
<div id=»header»><br />
</div><br />
<p><!— #header—><br /><br />
<!— конец хедера —><br /><br />
<!— основной блок —></p><br />
<div id=»middle»><br />
<div id=»container»><br />
<div id=»content»><br />
— здесь будет разрез, а содержимое будет отдельным файлом —</p><br />
<h3 align=»center» style=»color:#009933;»>Наполнение сайта</h3><br />
<p> — здесь будет разрез, контент также будет отдельным файлом — </p><br />
<p> — все что ниже, также будет отдельным файлом —<br /><br />
<br> </div><br />
<p><!— #content—><br />
</div><br />
<p><!— #container—><br /><br />
<!— левый сайдбар —></p><br />
<div class=»sidebar» id=»sideLeft»><br />
<div class=»menu»><br />
<b>вставить красивое<br> меню для сайта</b><br />
</div><br />
</div><br />
<p><!— .sidebar#sideLeft —><br />
</div><br />
<p><!— #middle—><br /><br />
<!— начало футера —></p><br />
<div id=»footer»><br />
</div><br />
<p><!— #footer —><br /><br />
<!— конец футера —><br />
</div><br />
<p><!— #wrapper —><br /><br />
<!— конец основного блока —><br /><br />
</body><br /><br />
</html><br /><br />

Порезка HTML — шаблона на PHP блоки.

 

Дальше формируем отдельные файлы и даем им названия header.php   title.php,   footer.php.

Первый файл будет содержать всю шапку сайта, аж до открытия блока <div id=»content»> и будет называться header, и обязательно с расширением php!!!

<br /><br />
<html><br /><br />
<head></head><br /><br />
<body></p><br />
<div id=»wrapper»><br />
<!— начало хедера —></p><br />
<div id=»header»><br />
</div><br />
<p><!— #header—><br /><br />
<!— конец хедера —><br /><br />
<!— основной блок —></p><br />
<div id=»middle»><br />
<div id=»container»><br />
<div id=»content»><br />
<p> и название файла будет header.php<br /><br />

 


 

Второй файл будет основным, содержать все наполнение сайта — контент, который не будет меняться в будущем, или очень редко. Статья обычно размещается один раз, а изменения на одной странице, дело не хлопотное. К нему и будут подключаться остальные файлы, отвечающие за дизайн. И называться будет он будет например — title.php

</p><br />
<h3 align=»center» style=»color:#009933;»>Наполнение сайта</h3><br />
<p> — здесь будет разрез, контент также будет отдельным файлом — </p><br />
<p> и название файла будет title.php<br /><br />

 


 

Все остальное — блок левого сайдбара и футер, формируем в третий файл — footer.php.

<br /><br />
— все что ниже, также будет отдельным файлом —<br /><br />
<br> </div><br />
<p><!— #content—><br />
</div><br />
<p><!— #container—><br /><br />
<!— левый сайдбар —></p><br />
<div class=»sidebar» id=»sideLeft»><br />
<div class=»menu»><br />
<b>вставить красивое<br> меню для сайта</b><br />
</div><br />
</div><br />
<p><!— .sidebar#sideLeft —><br />
</div><br />
<p><!— #middle—><br /><br />
<!— начало футера —></p><br />
<div id=»footer»><br />
</div><br />
<p><!— #footer —><br /><br />
<!— конец футера —><br />
</div><br />
<p><!— #wrapper —><br /><br />
<!— конец основного блока —><br /><br />
</body><br /><br />
</html><br /><br />
и название файла будет footer.php<br /><br />

Теперь можно начать собирать наш сайт, как конструктор и понять все таинство создания динамического сайта. Для этого нужно к основному файлу подключить два файла, отвечающие за дизайн и содержащие левый сайдбар. Вот тут нам и нужны элементарные знания PHP, без чего ничего не получиться. И для этого нужно применить уже известную нам функцию require.

<br /><br />
<?php require ‘header.php’; ?> — подключение файла header.php</p><br />
<h3 align=»center»>Наполнение сайта</h3><br />
<p align=»left»>Здесь можно писать что угодно и вставлять любую информацию,<br /><br />
предназначенную для посетителя.</p><br />
<p><?php require’footer.php’; ?> — подключение файла footer.php<br /><br />

И вот наша страница собрана! А данный файл — title.php будет шаблоном,с которого формируются новые страницы.
И сотворим главную, название которой будет index.php. Для этого просто скопируем файл title.php и при сохранении его в той же папке, дадим название index.php. И по такому же принципу создаются все новые страницы. Отличным будет только наполнение, все остальное у них будет общим, и легко будет поддаваться мгновенным изменениям!!!

И не зависимо от того, какая программа открывает ваши php-файлы, у меня установлена прога PHP Expert Editor, через которую очень удобно перекодировать страницы, должно получиться так, как на изображении. Два файла обязательных и три страницы.

А дальше можно добавлять свои изменения, зависимо от того, что Вы хотите от Вашего сайта. Например, если ввести переменную, которая будет выводить заголовок для каждой страницы по отдельности,
тогда нужно добавить такой код в файл header.php

<br /><br />
<title> <?php echo «$title»; ?> </title><br /><br />

А в шаблон добавить код, который будет содержать в себе свое уникальное название страницы, что необходимо для правильного продвижения сайта.

<br /><br />
<?php<br /><br />
$title =’Пример динамического сайта на PHP. ‘;<br /><br />
require ‘header.php’;<br /><br />
?> </p><br />
<h3 align=»center»>Наполнение сайта</h3><br />
<p align=»left»>Здесь можно писать что угодно и вставлять любую информацию,<br /><br />
предназначенную для посетителя.</p><br />
<p><?php require’footer.php’; ?><br /><br />

Хочу обратить Ваше внимание на один очень важный момент. Это касается разработки сайта любой сложности — перед созданием нового проекта, очень внимательно и четко определитесь со всеми будущими функциями проекта. Например, если будет блог, тогда нужен блок коментариев, а для этого нужно ввести переменную, которая будет определять уникальный адрес страницы и т.д. Одним словом — общую структуру сайта нужно продумывать до … , потому что после — будет много недоработок, которые исправлять очень долго и мучительно, и этот совет относиться и к простым сайтам, и к сложным проектам, построенным на супер-новом движке!

Для примера, по следующей ссылке, можно скачать шаблон динамического сайта., запустить его на своем локальном сервере и разобраться что к чему… Если будут пожелания, или предложения — тогда пишите через форму обратной связи.

kapon.com.ua

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *