logo
Разработка веб-сайта компании "ГИК"

1.1 Написание собственного ядра сайта

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

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

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

Создание собственного ядра сайта включает в себя несколько важных этапов:

1. Вёрстка основных страниц сайта.

На этом этапе не обязательно создавать готовый дизайн - это можно сделать потом. Здесь нужно сформировать структуру внешнего вида: где будет логотип, где меню, сколько колонок у сайта будет, что будет в подвале, шапке и так далее. Со временем это всё придётся поменять, но начальном этапе нужно отлаживать движок, поэтому самый элементарный внешний вид всё равно потребуется.

2. Создание всех таблицы для базы данных.

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

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

Например, класс по работе с базой данных, класс по управлению пользователями, класс по управлению статьями, класс для создания журнала действий пользователей и так далее. Нужно обратить внимание на то, что один класс не должен реализовывать задачи, которые по смыслу относятся к другим. Например, не надо соединяться с базой данных в классе пользователя. А надо создать объект базы данных в классе пользователя и им манипулировать. В каждом классе нужно должны написать все методы, которые в дальнейшем потребуются. Например, метод получения логина пользователя по его id или метод изменения e-mail пользователя и так далее. Также потребуется создать глобальный абстрактный класс, в котором будут содержаться методы, общие для всех других. Например, очень полезный метод - это получения значения некоего поля, по известному имени и значению другого поля. Например, по известному e-mail пользователя нужно узнать его логин. Такой метод легко данную задачу решит.

4. Создание шаблонной страницы сайта.

Следует разбить шаблон на составные логические части - подходящая часть готового шаблона (например, форма авторизации, часть, где выводятся статьи, меню, шапка, подвал и другие) вырезается и из этих частей создаются отдельные блоки или шаблоны с соответствующими вырезанными частями. В результате, появится большое количество отдельных блоков шаблонов, которые могут представлять собой отдельные файлы или же записи в базе данных. В этих блоках-шаблонах помечаются места, в которые следует встроить нужное модули или элементы шаблона. Например, там, где должно быть имя пользователя используется {username}. Там, где должен быть заголовок статьи, используется {article_title}. Аналогичным образом помечаются все нужные элементы в получившихся блоках.

5. Создание класса шаблонизатора.

В задачу этого класса будет входить работа с основными другими классами (например, классом пользователей), а также подстановка соответствующих данных в файлы-шаблоны вместо помеченных элементов. Например, вместо {username} этот класс должен будет подставить имя пользователя. Разумеется, здесь будет очень много методов, каждый из которых выполняет свою функцию.

6. Вывод html кода получившегося на основе получившихся шаблонов.

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

7. Финальное оформление сайта - создание уникального дизайна.

Требуется исправить получившиеся модули-шаблоны для соответствия требованиям, добавить CSS-файлы и JavaScript. Функциональность сайта, которая была создана на предыдущих шагах, трогать не требуется [1].

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

Для небольших сайтов типа: сайт-визитка или каталог, или сайтов, которые в будущем не планируется модернизировать, такой вариант может быть ещё как-то приемлемым. А вот в случае разработки чего-то более-менее серьёзного или масштабного, а также того, что в скором времени потребует доделок, или изменений, такой сайт будет сильно проигрывать любой из популярных готовых систем. Будет просто привязка непосредственно к первоначальному разработчику, ведь для того чтобы изучить новую систему - требуется определённое время и силы, а найти того, кто захочет разобраться в чужой разработке не так уж и просто.

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

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