Создаем точку входа

 

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

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

Для чего нужна одна точка входа? Ответ прост: так проще прослеживать работу скрипта, контролировать его и отлаживать. Что бы человек не вбил в адресную строку, мы всегда попадем на index.php. Давайте я приведу упрощенный более менее понятный пример.

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

А теперь представьте то же хранилище, но уже с одной дверью. Согласитесь охранять такое банковское хранилище куда проще.

Как перенаправлять все запросы на index.php?

Как уже говорил реализацию перенаправления берет на себя файл .htaccess. Давайте я сразу приведу его код: (данный файл должен лежать в корне сайта)

# стандартные настройки
# кодировка сервера
AddDefaultCharset utf-8
# запрещаем показывать содержимое директорий если там нет файла index.php[html][htm]
Options -Indexes
# базовый URL для преобразований
RewriteBase /
# включаем реврайт
RewriteEngine on

# правило редиректа с зеркала
# если к сайту обращаются через www.
RewriteCond %{HTTP_HOST} ^www.mini\.test\.ru
# редиректим на домен без www.
RewriteRule ^(.*)$ http://mini.test.ru/$1 [R=301,L]

# перенаправление на, физически существующую, папку или файл
# если в адресную строку вбит путь к файлу, то открываем этот файл
RewriteCond %{REQUEST_FILENAME} !-f
# если в адресную строку вбит путь к папке, то открываем эту папку
RewriteCond %{REQUEST_FILENAME} !-d

# передаем управление точки входа системы RS-MINI
RewriteRule ^.*$ index.php

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

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

Ладно, я отвлекся. Подобно настроенный .htaccess позволяет перенаправлять любые данный введенные в адресную строку на один и тот же файл — index.php.

Точка входа

Давайте теперь создадим эту точку входа. Вот код: (данный файл должен лежать в корне сайта)

<?php

/*
 * @package RS-MINI
 * @copyright (c) 2015 Alexey Glumov aka Rio-Shaman (support@rio-shaman.ru)
 * @license GNU General Public License version 2; see LICENSE.txt
 *
 */

define('RS-MINI', TRUE);                                        // константа безопасности
 
ini_set('display_errors', 1);                                   // показывать ли ошибки на экране
error_reporting(E_ALL | E_STRICT);                              // ур-нь ошибок
mb_internal_encoding("UTF-8");                                  // кодировка
date_default_timezone_set('Europe/Moscow');                     // временая зона

define('SHORT_DIR_RSMINI',  '/rs-mini');                        // короткий путь к движку (от корня пользовательской папки)
define('SHORT_DIR_PROJECT', '/project');                        // короткий путь к проекту (от корня пользовательской папки)
define('DIR_RSMINI',        __DIR__ . SHORT_DIR_RSMINI);        // каталог где лежит система (полный путь)
define('DIR_PROJECT',       __DIR__ . SHORT_DIR_PROJECT);       // каталог где лежит проект (полный путь)

echo "Привет мир!";

Что мы тут имеем?

Ну для начала я объявил константу RS-MINI. У всех остальных файлов будет проверка на наличие этой константы, что позволит нам не беспокоится о том, что кто-то попытается вызвать что-то кроме точки входа.

Далее идут 4-и строчки настоек сервера. А именно:

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

Следующие 4-и строки, объявляют константы с путями до системных папок. Например для записи файлов через менеджер файлов (который мы обязательно будем писать) нам понадобится полный путь к папке с этими файлами. А для того что бы отобразить ссылки на эти файлы, достаточно будет короткого пути.

Ну и последняя строчка, это тест, на работоспособность Улыбаюсь

Теперь, если все правильно настроено, при вызове, например, вот такого адреса:

http://mini.test.ru/test-url/

Мы попадет на index.php и увидим наше «привет мир!»

тест точки входа

Заключение

В общем-то что бы мы не ввели (кроме физически существующих папок или файлов) после .ru мы попадем на наше тестовое сообщение.

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

На сегодня все, до скорых встреч!

Ищите где можно посмотреть новые мультики? Есть один очень интересный портал, на котором Вы можете совершено легально, и в большинстве случаев бесплатно, посмотреть мультфильмы онлайн

Прикрепленные файлы

Возможно Вам будут интересны следующие заметки