[PHP] Создание простого движка на php. Часть 2

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

GM`ka

Ненадежный

GM`ka

Ненадежный
13 Сен 2015
294
157
Почему сайт нужно делать на движке?

Сайт можно сделать и на чистом html, без использования движков и php-вообщем. На php можно написать только форму обратной связи, и прочие скрипты, необходимые на сайте. Но возникает множество проблем, вот некоторые из них:

[list type=decimal]
[*]Сложность в изменений дизайна сайта
[*]Невозможно подключить систему управления контентов
[*]Сложность и длительность в изменении частей сайта (например, сделали сайт на html из 100 страниц, и потребовалось на каждой странице добавить новый пункт меню, придется все перелапачивать)
[/list]

Сейчас мы напишем движок для создания сайта из 3-ех страниц. Структуру движка можете посмотреть в предыдущем уроке.

Вот исходный код движка:
Файл: index.php
Файл выводит шапку и подвал, и запускает класс Engine, который выводит страницы сайта. Страницы сайта хранятся в папке templates.
PHP:
<?php
/**
* Простой движок на PHP
* @author ox2.ru
*/
include_once "class/Engine.php"; //Подключаем класс-движка
$engine = new Engine(); //Создаем объект класса Engine

include_once "templates/header.php"; //Подключаем шапку сайта

if ($engine->getError()) { //Если возникли ошибки, выводим сообщение на экран
    echo "<div style=\"border:1px solid red;padding:10px;margin: 10px auto;
        width: 500px;\">" . $engine->getError() . "</div>";
}
echo $engine->getContentPage(); //Выводим страницы сайта

include_once "templates/footer.php";//Подключаем подвал сайта
?>
Файл: class/Engine.php
Основной файл движка. Отвечает за открытия страниц. Имя файла шаблона передается методом GET. По-умолчанию открывается страница main.php.

PHP:
<?php
/**
* Простой движок на PHP
* @author ox2.ru
*/
class Engine {

    private $_page_file = null;
    private $_error = null;

    public function __construct() {
        if (isset($_GET["page"])) { //Если открыта какая-нибудь страница
            //Записываем в переменную имя открытого файла (из GET запроса)
            $this->_page_file = $_GET["page"];
            //Небольшая защита
            $this->_page_file = str_replace(".", null, $_GET["page"]);
            $this->_page_file = str_replace("/", null, $_GET["page"]);
            $this->_page_file = str_replace("\\", null, $_GET["page"]);

             //Проверяем, если шаблон не существует
            if (!file_exists("templates/" . $this->_page_file . ".php")) {
                $this->_setError("Шаблон не найден"); //Ошибку на экран
                $this->_page_file = "main"; //Открываем главную страницу
            }
        }
         //Если в GET запросе нет переменной page, то открываем главную
        else $this->_page_file = "main";
    }

    /**
     * Записывает ошибку в переменную _error
     * @param string $error - текст ошибки
     * @author ox2.ru
     */
    private function _setError($error) {
        $this->_error = $error;
    }

    /**
     * Возвращает текст ошибки
     * @author ox2.ru
     */
    public function getError() {
        return $this->_error;
    }

    /**
     * Возвращает текст открытой страницы
     */
    public function getContentPage() {
        return file_get_contents("templates/" . $this->_page_file . ".php");
    }

    /**
     * Возвращает тег заголовок открытой страницы
     * @return string
     */
    public function getTitle() {
        switch ($this->_page_file) {
            case "main":
                return "Главная страница сайта";
                break;
            case "about":
                return "О компании";
                break;
            case "ox2":
                return "Преимущества";
                break;
            default:
                break;
        }
    }

}
Файл: templates/header.php
Шапка сайта, содержит верхнее меню, можно поставить логотип сайта, и другую не изменную информацию. Обратите внимание на то, что в верхнем меню сайта есть одна битая ссылка. Ее мы сделали специально, чтобы протестировать методы записи и вывода ошибок на сайт.

HTML:
<html>
        <head>
            <?php global $engine; ?>
            <title><?php $engine->getTitle(); ?></title>
        </head>
        <body>
            <div style="background-color: #E9E8E2">
                <a href="?page=main">Главная</a> | <a href="?page=about">О компании</a>
             | <a href="?page=asdasd">Битый раздел</a>
            </div>

        </body>
    </html>
Файл: templates/footer.php
Подвал нашего сайта, обычно содержит копирайт компании которая создала сайт, телефоны, и нижнее меню

HTML:
<div style="float: right; clear: both;">
   
    <strong>&copy; 2012 Все права защищенны -
    <a href="#" target="__blank">Создание сайтов</a></strong>
</div>
</body>
</html>
Файл: templates/main.php - Главная страница

HTML:
<h1>Главная страница сайта</h1>
<p>Сайт в разработке</p>
Файл: templates/about.php - Страница о компании

HTML:
<h1>О компании</h1>
    <p>текст еще не написан</p>
На этом php движке можно сделать простенький сайт. Стоимость создания сайта с таким движком обычно очень низкая, т.к. в нем нет системы управления.
 

О нас

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

    Dark-Time 2015 - 2024

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя