Продолжая эпическую сагу про создании своей CMS (системы управления веб сайтом) мы подобрались к созданию ядра, иначе говоря основы на которой всё будет крепиться. Или как некоторые говорят движка.
Создадим в директории /panel/core/ файл APPLICATION.php. Это файл содержит основные функции для работы админской части.
Добавим в него класс APPLICATION, функцию инициализации и соединения с базой данных.
<!--?php if (!defined('ACCESS')) die('ACCESS_DENIED'); /** * Основной класс системы, содержащий методы, для соединения с базой даных, инициализации системы, модулей, * */ class APPLICATION { /** * * Линк соединения с базой данных * @var DBlink */ public $db_link; // Линк соединения с базой public $view_name; private function dbconn() { global $_SETTINGS; $this--->db_link = mysql_connect ( $_SETTINGS ['dbhost'], $_SETTINGS ['dbuser'], $_SETTINGS ['dbpass'] ); if ($this->db_link == false) { die ( DB_CONNECT_ERROR ); } if (mysql_select_db ( $_SETTINGS ['dbname'] ) == false) { die ( DB_SELECT_ERROR ); } mysql_query ( "SET character_set_client = '" . $_SETTINGS ['db_charset'] . "'" ); mysql_query ( "SET character_set_connection = '" . $_SETTINGS ['db_charset'] . "'" ); mysql_query ( "SET character_set_results = '" . $_SETTINGS ['db_charset'] . "'" ); mysql_query ( "SET NAMES '" . $_SETTINGS ['db_charset'] . "'" ); } /** * Производит инициализацию приложения (исполняет функцию установления соединения с базой, инициализирует модули). * * Данная функция должна быть выполнена раньше других скриптов. * Параметр $vcontent необходим для указания места вызова функции. Передается в функцию инициализации модулей module_init ( $vcontent ) * Принимает значения true или fasle * Значения true устанавливается , если необходимо инициализировать как активные так и неактивные модули * Значение false устанавливается как правило для клиентской части, и тогда функция инициализирует только активные модули. * * */ public function init($vcontent = true) { global $_SETTINGS; if ($_SETTINGS ['debugging']) { error_reporting ( $_SETTINGS ['error_level'] ); } $this->dbconn (); } } $APPLICATION = new APPLICATION (); ?>
Итак у нас есть основной класс. Пока он только умеет соединяться с базой данных и контролировать вывод ошибок php в нашей системе управления сайтом. Контроль производится путём редактирования файла conf.php.
Функция dbconn() выполняет соединение с базой данных, и устанавливает необходимые кодировка для соединения и данных, указанных в conf.php.
$APPLICATION = new APPLICATION (); — создаём экземпляр класса.
Наша программа (CMS) будет иметь 3 точки входа. 1-я это в админ панели, файл index.php 2-я файл index.php в корне сайта. 3-я файл login.php в админской части сайта.
Начнём с админ панели. Пропишем в файле index.php следующие строки:
<p><!--?php session_start(); define('ACCESS', 1); include 'config.php'; include 'core/APPLICATION.php'; include_once 'stack.php'; // Инициализируем систему и модули $APPLICATION--->init(true);</p> <p>?><br />
session_start(); — начинаем сессию
define(‘ACCESS’, 1); — обьявляем константу доступа. С ней не будет возможным прямой доступ к файлам системы. Для этого необходимо в каждом файле *.php прописать следующую строку:
if (!defined(‘ACCESS’)) die(‘ACCESS_DENIED’);
При попытке прямого доступа к файлам нашей CMS, у которых имеется данная строчка, будет прекращено выполнение скрипта и выведено сообщение об ошибке доступа. Поэтому добавим в наш файл APPLICATION.php эту строку.
$APPLICATION->init(true); — выполнение этой строчки производит соединение с базой данных. В дальнейшем мы немного дополним нашу функцию.
Систему я посадил на созданный локальный хост. У меня это alexa.lk. Обратимся к системе через браузер http://alexa.lk/panel/. Если всё поло правильно то у нас должен открыться пустой экран. Это означает что соединение с сервером баз и выбор базы данных прошёл успешно.Проолжение следует
Все файлы можно скачать тут