Создание страничек со статьями php. PHP

2017-01-10


Создаем динамический сайт с помощью php

Здравствуйте уважаемый посетитель!

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

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

  • Зачем нужен динамический сайт
  • Как преобразовать статический сайт в динамический
  • Формируем блоки динамического сайта
  • Преобразуем веб-страницу из статической в динамическую
  • Исходные файлы сайта

Зачем нужен динамический сайт

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

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

скриншот 12

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

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

Как преобразовать статический сайт в динамический

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

В динамическом же варианте, формирование страниц происходит на сервере при каждом запросе пользователя в зависимости запрашиваемой информации.

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

Исходя из этого и сделаем из нашей созданной главной страницы подобие конструктора, состоящего из определенных элементов (в нашем случае это будут файлы), из которых в последствии будут собираться веб-страницы по запросам пользователей.

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

  1. "utf-8" >

    <span><b>Заголовок страницы </b> </span>

    "Description" content ="Краткое описание содержания страницы" >

  2. "wrapper" >

    Шапка

    Ротатор

    Основное содержание

    Сайдбар

    Подвал

Как видно из HTML-кода, контейнер , предназначенный для размещения видимой части веб-страницы содержит следующие основные блоки:

  • Шапка;
  • Ротатор;
  • Основное содержимое;
  • Сайдбар;
  • Подвал.

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

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

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

Такое построение структуры сайта позволит в дальнейшем не заниматься рутинной работой по изменению HTML-кода всех страниц в случае замены или дополнения какого-либо общего для них фрагмента. В таких случаях достаточно будет внести изменения лишь в какой-то определенный файл, и на этом вся процедура замены будет выполнена. Как видно, преимущество налицо.

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

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

Как вариант, неоднократно уже упомянутый справочник "Puzzleweb.ru", в котором одна из его частей уделена теме PHP. Для более углубленного изучения PHP можно также воспользоваться специализированным справочником, заточенным именно под этот язык, размещенный на сайте "php.ru". По ссылке "https://php.ru/manual/control-structures.intro.html" можно попасть на его страницу "Введение", откуда легко выбрать любой интересующийся раздел справочника.

Но для того, чтобы сейчас сделать динамический сайт и обеспечить возможность подключения файлов к HTML-сраницам достаточно использовать лишь только одну языковую инструкцию (в PHP любой сценарий состоит из последовательности инструкций). Это может быть одна из четырех возможных вариантов инструкций, предназначенных для подключения файлов:

  • include;
  • require;
  • include_once;
  • require_once.

Расписывать здесь их особенности нет смысла, так как это подробно пояснено в справочниках, например по ссылке "http://www.puzzleweb.ru/php/26_inc_files.php" можно хорошо с этим разобраться.

Мы же при создании сайта будем использовать инструкцию "require_once", обычно я использую этот вариант, для меня он наиболее удобен.

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

Формируем блоки динамического сайта

Для того, чтобы сформировать блоки, которые затем будут участвовать в сборке веб-старниц, в первую очередь необходимо их создать. Делается это в текстовом редакторе Notepad++ аналогично тому, как мы создавали первый файл сайта "index.html" в статье Создаем веб-страницу и размещаем ее на локальном веб-сервере . Только расширение в этом случае нужно указывать не "html", а "php". При этом нужно обязательно обратить внимание на кодировку, чтобы в дальнейшем избежать появления на страницах разного рода непонятных знаков.

Файлы будем создавать в отдельной, вновь созданной папке "blocks". Для файлов, которые являются общими для всех страниц, присвоим названия с учетом названий соответствующих блоков. А для блока "main" укажем определенное название для каждой страницы сайта.

Таким образом, для главной страницы к блоку "main" будем подключать файл под названием "block_glavnaya". Для остальных: "header", "section", "aside" и "footer".

При создании файлов также можно учесть, что для упрощения этой процедуры возможно воспользоваться их копированием с помощью меню "Файл", указав при сохранении "Сохранить как" новое название файла.

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


Затем скопируем содержание каждого блока и перенесем его в соответствующий файл. На примере "header.php" рассмотрим это более подробно.

1. Открываем в редакторе Notepad++ файл "index.html", выделяем нужную область блока "header" и поочередным нажатием правой и левой кнопки мышки копируем ее в буфер обмена.

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

  • необходимо для каждой страницы классу class присваивать значение "activ" . То же самое относится и к аналогичному фрагменту в блоке "footer".

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

    Как выделить и скопировать в буфер обмена фрагмент блока "header" показано ниже на скриншоте.



    3. И в завершении, для того, чтобы сдвинуть содержимое файла в Notepad++ в левую сторону нужно при нажатой кнопке "Shift" несколько раз нажать на "Tab". В итоге получим сформированный файл "header.php" в следующем виде.


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


    Рис.6 Файл "section.php"


    Рис.7 Файл "block_glavnaya.php"


    Рис.8 Файл "aside.php"


    Рис.9 Файл "footer.php"

    Таким образом мы получили все файлы для создания динамической странице, и можем теперь перейти непосредственно к ее HTML-коду.

    Преобразуем веб-страницу из статической в динамическую

    Для того, чтобы обеспечить для нашей главной страницы загрузку файлов, которые были созданы в предыдущем разделе, необходимо сначала изменить расширение файла "index" с "html" на "php", а затем в редакторе Notepad++ вновь его открыть и внести следующие изменения:

    • Удалить содержимое блоков, которое ранее было перенесено во вновь созданные файлы.
    • На освободившееся место записать на языке PHP инструкции "require_once" с указанием пути к соответствующим файлам.
    • В тегах меню
    • , в которых указывается путь к страницам, для главной страницы заменить расширение с "html" на "php", а для других указать наименования вновь создаваемых страниц.
    • Указать в заголовке "Главная".

    После выполнения этих операций наша главная страница должна приобрести следующий вид.


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

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

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

    Обновим сейчас браузер и попробуем открыть главную страницу.


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

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

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

    Исходные файлы сайта

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

    Здравствуйте! Сейчас мы попробуем реализовать самую простую регистрацию на сайте с помощью PHP + MySQL. Для этого на вашем компьютере должен быть установлен Apache. Принцип работы нашего скрипта изображен ниже.

    1. Начнем с создания таблички users в базе . Она будет содержать данные пользователя (логин и пароль). Зайдем в phpmyadmin (если вы создаете базу на своем ПК http://localhost/phpmyadmin/ ). Создаем таблицу users , в ней будет 3 поля.

    Я создаю ее в базе mysql, вы можете создавать в другой базе. Далее устанавливаем значения, как на рисунке:

    2. Необходимо соединение с этой таблицей. Давайте создадим файл bd.php . Его содержание:

    $db = mysql_connect ("ваш MySQL сервер","логин к этому серверу","пароль к этому серверу");
    mysql_select_db ("имя базы, к которой подключаемся",$db);
    ?>

    В моем случае это выглядит так:

    $db = mysql_connect ("localhost","user","1234");
    mysql_select_db ("mysql",$db);
    ?>

    Сохраняем bd.php .
    Отлично! У нас есть таблица в базе, соединение к ней. Теперь можно приступать к созданию странички, на которой пользователи будут оставлять свои данные.

    3. Создаем файл reg.php с содержанием (все комментарии внутри):



    Регистрация


    Регистрация
















    4. Создаем файл , который будет заносить данные в базу и сохранять пользователя. save_user.php (комментарии внутри):



    {
    }
    //если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести


    //удаляем лишние пробелы
    $login = trim($login);
    $password = trim($password);
    // подключаемся к базе
    // проверка на существование пользователя с таким же логином
    $result = mysql_query("SELECT id FROM users WHERE login="$login"",$db);
    if (!empty($myrow["id"])) {
    exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
    }
    // если такого нет, то сохраняем данные
    $result2 = mysql_query ("INSERT INTO users (login,password) VALUES("$login","$password")");
    // Проверяем, есть ли ошибки
    if ($result2=="TRUE")
    {
    echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница";
    }
    else {
    echo "Ошибка! Вы не зарегистрированы.";
    }
    ?>

    5. Теперь наши пользователи могут регистрироваться! Далее необходимо сделать "дверь" для входа на сайт уже зарегистрированным пользователям. index.php (комментарии внутри) :

    // вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
    session_start();
    ?>


    Главная страница


    Главная страница











    Зарегистрироваться



    // Проверяем, пусты ли переменные логина и id пользователя
    if (empty($_SESSION["login"]) or empty($_SESSION["id"]))
    {
    // Если пусты, то мы не выводим ссылку
    echo "Вы вошли на сайт, как гость
    Эта ссылка доступна только зарегистрированным пользователям";
    }
    else
    {

    В файле index.php мы выведем ссылочку, которая будет открыта только для зарегистрированных пользователей. В этом и заключается вся суть скрипта - ограничить доступ к каким-либо данным.

    6. Остался файл с проверкой введенного логина и пароля. testreg.php (комментарии внутри):

    session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
    if (isset($_POST["login"])) { $login = $_POST["login"]; if ($login == "") { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
    if (isset($_POST["password"])) { $password=$_POST["password"]; if ($password =="") { unset($password);} }
    //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
    if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    {
    exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    }
    //если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
    $password = stripslashes($password);
    $password = htmlspecialchars($password);
    //удаляем лишние пробелы
    $login = trim($login);
    $password = trim($password);
    // подключаемся к базе
    include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь

    $result = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //извлекаем из базы все данные о пользователе с введенным логином
    $myrow = mysql_fetch_array($result);
    if (empty($myrow["password"]))
    {
    //если пользователя с введенным логином не существует
    }
    else {
    //если существует, то сверяем пароли
    if ($myrow["password"]==$password) {
    //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
    $_SESSION["login"]=$myrow["login"];
    $_SESSION["id"]=$myrow["id"];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
    echo "Вы успешно вошли на сайт! Главная страница";
    }
    else {
    //если пароли не сошлись

    Exit ("Извините, введённый вами login или пароль неверный.");
    }
    }
    ?>

    Ну вот и все! Может урок и скучный, но очень полезный. Здесь показана только идея регистрации, далее Вы можете усовершенствовать ее: добавить защиту, оформление, поля с данными, загрузку аватаров, выход из аккаунта (для этого просто уничтожить переменные из сессии функцией unset ) и так далее. Удачи!

    Все проверил, работает исправно!

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

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

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

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

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

    Для примера будет взят шаблон сайта, написанный с применением тега

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


































    — здесь будет разрез, а содержимое будет отдельным файлом —



    Наполнение сайта





    — все что ниже, также будет отдельным файлом —

















    вставить красивое
    меню для сайта






































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

    Первый файл будет содержать всю шапку сайта, аж до открытия блока

    и будет называться header , и обязательно с расширением php !!!


































    И название файла будет header.php


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



    Наполнение сайта



    — здесь будет разрез, контент также будет отдельным файлом —



    И название файла будет title.php


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




    — все что ниже, также будет отдельным файлом —

















    вставить красивое
    меню для сайта






































    и название файла будет footer.php


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




    — подключение файла header.php



    Наполнение сайта








    — подключение файла footer.php


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

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

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




    <?php echo «$title»; ?>


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






    $title =’Пример динамического сайта на PHP. ‘;


    require ‘header.php’;


    ?>



    Наполнение сайта



    Здесь можно писать что угодно и вставлять любую информацию,


    предназначенную для посетителя.






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

    Для создания перспективного, расширяемого и эффективного сайта любой сложности следует начинать с простого. Это процесс нелёгкий, требует определённых базовых знаний PHP и MySQL, но если его рассмотреть по пунктам - то можно составить своего рода «рабочий план», который пригодится при создании новых сайтов. Подготовим «ядро» и базу для проекта. Вначале это будет обычный сайт визитка, но потом, добавляя функционал, его можна превратить во что угодно. Итак, приступим.

    1. Подготовка базы данных. Создаём первую таблицу в БД MySQL

    Создаём новую базу данных, например «mysite». Лично я привык работать с кодировкой UTF-8, по-этому сразу оговорюсь: проследите, чтобы все текстовые файлы сайта, сама база, таблицы и поля таблиц были в одной кодировке.
    В новой базе делаем таблицу. Назовём её «pages». В этой таблице будут храниться статические страницы будущего сайта и информация о них. Таблица должна содержать следующие поля:

    • page_id - идентификатор страницы (SMALLINT, primary key, auto_increment);
    • page_alias - псевдоним страницы для строки адреса ЧПУ (VARCHAR, 255);
    • page_title - название страницы в окне браузера (VARCHAR, 255);
    • page_meta_d - мета описание страницы для тега meta description (VARCHAR, 255);
    • page_meta_k - мета ключевые слова для тега meta keywords (VARCHAR, 255);
    • page_h1 - заголовок страницы (VARCHAR, 255);
    • page_s_desc - краткое описание материала, например если материалы сайта будут в виде блога (TEXT);
    • page_content - основной текст страницы, который будет выводиться в центральную колонку сайта (TEXT);
    • page_publish - содержит «Y» - если страница опубликована, или «N» - если она скрыта (CHAR, по умолчанию «Y»).

    Сразу после создания таблицы вставляем в неё значения для главной страницы сайта. В поле «page_alias» для главной страницы предлагаю вставить значение «home». Метатеги - соответственно тематике всего сайта. Таким же образом можно посоздавать другие страницы, например «О компании» с алиасом «about» и своими метатегами, или «Контакты» с алиасом «contacts» и т.д.

    2. Создаём файл конфигурации сайта

    В корневой папке сайта, которая должна быть пуста на данном этапе, создаём папочку «cfg», в ней с помощью.htaccess закрываем доступ директивой «deny from all». Создаём файл core.php следующего содержания:

    // MYSQL
    class MyDB
    {
    var $dblogin = "root"; // ВАШ ЛОГИН К БАЗЕ ДАННЫХ
    var $dbpass = ""; // ВАШ ПАРОЛЬ К БАЗЕ ДАННЫХ
    var $db = "mysite"; // НАЗВАНИЕ БАЗЫ ДЛЯ САЙТА
    var $dbhost="localhost";

    Var $link;
    var $query;
    var $err;
    var $result;
    var $data;
    var $fetch;

    Function connect() {
    $this->link = mysql_connect($this->dbhost, $this->dblogin, $this->dbpass);
    mysql_select_db($this->db);
    mysql_query("SET NAMES utf8");
    }

    Function close() {
    mysql_close($this->link);
    }

    Function run($query) {
    $this->query = $query;
    $this->result = mysql_query($this->query, $this->link);
    $this->err = mysql_error();
    }
    function row() {
    $this->data = mysql_fetch_assoc($this->result);
    }
    function fetch() {
    while ($this->data = mysql_fetch_assoc($this->result)) {
    $this->fetch = $this->data;
    return $this->fetch;
    }
    }
    function stop() {
    unset($this->data);
    unset($this->result);
    unset($this->fetch);
    unset($this->err);
    unset($this->query);
    }
    }

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

    Если Вы работаете в среде Windows, я могу порекоммендовать использовать редактор . В этом редакторе есть нумерация строк, и он легко переводит текст из одной кодировки в другую. ВНИМАНИЕ! Если Вы работаете в кодировке UTF-8 - конвертируйте файлы в UTF-8 without BOM - это поможет избежать проблем в будущем.

    3. Создаём index.php - главный контроллер сайта

    Файл конфигурации создан. Теперь в корневой папке сайта создаём index.php - это и будет основной скрипт сайта, своего рода «главный контроллер». Содержание файла index.php:

    define("INDEX", ""); // УСТАНОВКА КОНСТАНТЫ ГЛАВНОГО КОНТРОЛЛЕРА

    Require_once($_SERVER."/cfg/core.php"); // ПОДКЛЮЧЕНИЕ ЯДРА

    // ПОДКЛЮЧЕНИЕ К БД
    $db = new MyDB();
    $db->connect();

    // ГЛАВНЫЙ КОНТРОЛЛЕР
    switch ($_GET) {
    case "page":
    include($_SERVER."/com/page.php");
    break;
    default:
    include($_SERVER."/com/home.php");
    break;
    }

    Include ($_SERVER."/template.php");
    $db->close();

    Переменная $_GET будет указывать главному контроллеру какой компонент сайта загружать при запросе. Сейчас в нашем сайте предусмотрено только два компонента: «страница» и «главная страница» (в принципе можно обойтись и одним компонентом вывода обычной страницы, но часто вид главной страницы сайта отличается от обычных страниц пунктов меню). Логика работы главного контроллера такова: из URL строки извлекается название нужного компонента (значение переменной $option), в зависимости от его значения подключается файл самого компонента (содержится в папке /com). Файл компонента выполняет все необходимые работы, извлекает из базы данные и записывает их в переменные, для передачи в шаблон дизайна. В самом конце подключается файл дизайна сайта, в который и передаются все переменные и данные, извлечённые в компонентах. Это звучит намного сложнее, чем работает.

    4. Создаём компонент вывода обычной страницы

    В корне сайта создаём папочку «com» - в ней будут храниться файлы компонентов. Компонент сайта, в моём понимании - это файл, в котором происходит обработка данных для разных разделов сайта. Например компонент обычной страницы извлекает из базы данных название, описание и текст материала, и записывает их в переменные $title, $meta_d, $meta_k, $content и др. Эти данные потом передаются в шаблон дизайна (под каждый компонент можно создавать свой шаблон дизайна) и выводятся пользователю в виде HTML-страницы. Например, компонент каталога, который можно создать в будущем, выполнял бы почти то же самое, но с данными про товары - а там своя специфика, другие поля в таблице, итд. По-этому для каждого функционального раздела сайта стоит создавать отдельный компонент. В схеме MVC (Model-View-Controller) компонент выполняет роль модели.

    Создаём в папке «com» файл «page.php». Содержимое файла следущее:

    /* КОМПОНЕНТ СТРАНИЦЫ */
    $alias = $_GET;
    $query = "SELECT * FROM pages WHERE page_alias="".$alias."" AND page_publish="Y" LIMIT 1";
    $db->run($query);
    $db->row();
    // ПЕРЕМЕННЫЕ КОМПОНЕНТА
    $id = $db->data;
    $alias = $db->data;
    $title = $db->data;
    $h1 = $db->data;
    $meta_d = $db->data;
    $meta_k = $db->data;
    $s_desc = $db->data;
    $component = $db->data;
    // ЕСЛИ СТРАНИЦЫ НЕ СУЩЕСТВУЕТ
    if (!$id) {
    header("HTTP/1.1 404 Not Found");
    $component = "ОШИБКА 404! Данной страницы не существует";
    }
    $db->stop();

    5. Создаём компонент вывода главной страницы

    Главная страница у нас в базе данных хранится под псевдонимом «home», и пока по своей структуре не отличается от обычных страниц сайта - это просто статья. Тем не менее создадим для неё отдельный компонент - на перспективу, так сказать.


    Содержимое компонента «home.php» в папке «com» почти совпадает с содержимым компонента обычной страницы, за исключением строки запроса к базе и названия компонента. Строка запроса теперь выглядит так:

    $query = "SELECT * FROM wx_pages WHERE page_alias="home" LIMIT 1";

    6. Создаём шаблон дизайна всего сайта

    В корне сайта создаём файл template.php. По сути это обычный макет web-дизайна в формате HTML+CSS, только с PHP переменными в нужных местах. Между тегами title вставочка , в центральной колонке сайта вставочка и так по всему шаблону расставляем нужные переменные, которые объявлены в компонентах.

    В корневой папке также должны быть папки «css» и «images» для элементов дизайна. В файле /css/style.css - можно настроить стили по своему усмотрению.

    7. Чистые ссылки и файл.htaccess

    Для создания чистых ссылок я использую mod_rewrite с прямыми указаниями правил для каждого компонента отдельно, так как разбор адресной строки средствами самого контроллера считаю излишним функционалом. Содержимое.htaccess на данном этапе такое:


    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f

    # ЗАПРЕЩЁННЫЕ ФАЙЛЫ
    RewriteRule .htaccess - [F]
    RewriteRule template.php - [F]

    # ПРАВИЛА mod_rewrite
    RewriteRule page/(+)([\/]{0,1})\.htm$ index.php?option=page&alias=$1 [L]

    В будущем мы будем дописывать правила для компонентов поиска, каталога, блога статей и т.д. Смысл один: преобразовать ссылки вида «mysite.com/index.php?option=pages&alias=about » в ссылку вида «mysite.com/pages/about.htm » - смотрится довольно красиво. Старайтесь в разработке избегать массива $_GET в целях безопасности и не надеяться на него. Целесообразно хранить в нём только параметры для главного контроллера (переменная $option) и для компонента (переменная $alias).

    Также в каждой папке сайта «на всякий случай» создайте пустой файл index.html - это нужно для того, чтобы при обращении к каталогу через адресную строку ничего не отображалось.

    Теги: php, mysql, движок сайта, контроллер, создание сайта, mvc

    В сети Интернет существует огромное количество web-сайтов. Все эти сайты можно разделить на два типа: статические и динамические. Сегодня мы поговорим о создании динамических страниц, но сперва я хотел бы Вам рассказать что такое статический и динамический сайт (страница).

    Статические сайты

    Статические сайты состоят из статических web-страниц. Это означает, что независимо от действий пользователя страница всегда выглядит одинаково. Такие страницы хранятся на сервере как документы HTML. Верстаются статические страницы вручную. Если нужно изменить содержимое страницы, то приходится редактировать код HTML у каждой страницы.

    Достоинства:

    • Простота и дешевизна создания, нетребовательность к аппаратным ресурсам;

    Недостатки:

    • Большие временные затраты на редактирование контента;
    • Нецелесообразность использования в крупных проектах.

    Динамические сайты

    Динамические сайты состоят из динамических web-страниц, которые могут реагировать на действия пользователя и изменяться. Такие страницы формируются web-сервером из нескольких файлов (шаблонов). Вся информация хранится в базе данных. Когда пользователь запрашивает страницу, соответствующая информация извлекается из базы, вставляется в шаблон, образуя web-страницу, и пересылается web-сервером в пользовательский браузер. Таким образом, при обновлении содержимого сайта, необходимо просто добавить текст для новой страницы, который затем вставляется в базу данных с помощью определенного механизма.

    Достоинства:

    • Управление контентом производится через специальные формы, где можно легко добавлять, редактировать и удалять информацию;
    • Максимальная оперативность при добавлении нового контента на сайт;
    • При добавлении или редактировании контента не требуется специальных знаний из области web-мастеринга (HTML, CSS);
    • Возможность создания крупных многофункциональных проектов;
    • Большие возможности для раскрутки.

    Недостатки:

    • Высокая стоимость создания и обслуживания;
    • Нужно обладать соответствующими знаниями для поддержания работоспособности сайта.

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

    Простые ссылки

    Прежде чем изучать язык PHP я думаю вы уже должны знать HTML и конечно же создание гоперссылок. Хотелось бы Вам напомнить:

    $link = "example.php"; print "<а href = \"$link\">Пример динамической гиперссылки.
    \n"

    Вот так просто создается динамическая гиперссылка с помощью языка php.

    Процесс создания динамической страницы

    Процесс создания динамической страницы состоит из нескольких этапов:

    Сверстаем каркас страницы. Назовем страницу index.php – она будет состоять из частей: шапка (header), подвал (footer), левое меню (leftmenu). В данном примере я покажу как верстается страница на основе таблиц, но можно использовать и блочную версту.

    1. Формируем файл header.php.

    Динамическая страница на PHP.

    Шапка сайта


    2. Формируем файл leftmenu.php.

    • Ссылка 1
    • Ссылка 2
    • Ссылка 3
    • Ссылка 4
    • Ссылка 5

    3. Формируем файл footer.php.

    Подвал сайта


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

    Подключим полученные файлы (шаблоны) к сайту с помощью инструкции include на примере страницы index.php.

    Привет!

    Это первая динамическая страница на PHP.

    Вот так страница index.php - это динамическая страница, она будет формироваться из нескольких файлов (шаблонов). Таких шаблонов можно сделать любое количество. При необходимости изменения какой-либо части сайта достаточно найти нужный файл шаблона и отредактировать его.

    На этом создание динамических страниц окончено. Я думаю вы поняли смысл и практичность динамических сайтов и на основе моего примера сможете создать большой проект. Да и не забывайте комментировать Ваш код – это очень важно друзья! Удачи Вам!

    P.S. Небольшие изменения от 06.07.2019 года:

    Так как программирование развивается всегда поэтому и должен развиваться со скоростью света. Табличная верстка показанная выше в наше время мало применяется на практике и необходима только для изучения начинающим программистам.

    Если вы хотите создавать новые и эффективные web-сайты, тогда рекомендуем использовать не табличную верстку, а блочную верстку. Рассмотрим подробнее.

    Таблицы придуманы именно для вывода табличных данных, а не для разметки элементов страницы. То, что расположено в таблице:

    текст

    может быть представлено в виде блочной (дивовой) верстки:

    текст

    это занимает гораздо меньший объем дискового пространства.

    Рассмотрим преимущества блочной верстки по сравнению с табличной:

    1. Существенное уменьшение размера страницы, как правило в 2–3 раза, что значительно уменьшает время загрузки web-сайта. При этом незначительно вырастет размер -файла, но, благодаря тому, что он единожды кэшируется браузером юзера и при обращении к другим страницам считывается уже с его компьютера, в результате сайт грузится гораздо быстрее, чем табличный.
    2. Значительно удобнее менять оформление страниц сайта, вынесенное в CSS-файл. При этом практически отсутствует необходимость редактирования -кода.
    3. Благодаря возможностям блочной верстки можно добиться того, что в коде сначала пойдет основной контент страницы, а только потом шапка, левая и/или правая колонки. При этом внешний вид страницы совершенно не изменится.
    4. Визуально приятна прозрачность кода блочной страницы – нет никаких нагромождений тегов, все очень красиво и компактно.