Loading
Красноглазым Джедаям
компьютерной вселенной
посвящается.

Шаг четвертый. Файл mysql.php и языковой файл.

В файле "/libs/model/mysql.php" мы определим параметры, настроим вывод ошибок и подключимся к базе данных. В языковом файле предусмотрим возможности создания разделов сайта на разных языках.

Больной нуждается в уходе врача. И чем дальше уйдет врач, тем лучше...

Подключение к базе данных.

Создадим пользовательскую функцию - обертку и назовем ее mysqlQuery(). Она позволит выполнять запросы в базе данных и в случае неудачи выведет причины в удобночитаемом виде. Первым аргументом функция принимает правильный MYSQL запрос. Вторым аргументом мы определяем флаг, с поощью которого сможем в любой момент распечатать результаты выполнения функции независимо от того была ошибка или нет. Для этого достаточно вызвать ее со вторым аргументом, например вставить цифру один: mysqlQuery($sql, 1).

Приведу сразу полный код файла mysql.php: /** * Функция обработки литеральных констант для SQL (ЗАЩИТА ОТ ИНЬЕКЦИЙ) */ function escapeString($data) { if(is_array($data)) $data = array_map("escapeString", $data); else $data = mysql_real_escape_string($data); return $data; } /** * Function for inquiry to DB MySQL. * Функция для запроса к БД MySQL. */ function mysqlQuery($sql, $print = false) { $result = mysql_query($sql, MYSQL_CONNECT); if($result === false || $print) { $error = mysql_error(); $trace = debug_backtrace(); $head = $error ?'<b style="color:red">MySQL error: </b><br> <b style="color:green">'. $error .'</b><br><br>':NULL; $error_log = date("Y-m-d h:i:s") .' '. $head .' <b>Query: </b><br> <pre><span style="color:#CC0000">'. $trace[0]['args'][0] .'</pre></span><br><br> <b>File: </b><b style="color:#660099">'. $trace[0]['file'] .'</b><br> <b>Line: </b><b style="color:#660099">'. $trace[0]['line'] .'</b>'; /////// Удалить при размещениии на сервере/////// die($error_log); ///////////////////////////////////////////////// /* Если ошибка, то никто ее не увидит, выводится стандартная страница типа файл не найден */ header("HTTP/1.1 404 Not Found"); die(file_get_contents(CONFIG_ROOT .'404.html')); } /* Если ошибки нет, то возвращается результат запроса */ else return $result; } /* Соединяемся с базой данных */ $db_1 = mysql_connect( CONFIG_DBSERVER, CONFIG_DBUSER, CONFIG_DBPASSWORD ) or die(LANG_NO_CONNECT); /* Идентификатор соединения пишем в константу */ define('MYSQL_CONNECT', $db_1); mysql_select_db( CONFIG_DATABASE, MYSQL_CONNECT )or die(LANG_NO_DB_SELECT); mysqlQuery('SET NAMES utf8'); mysqlQuery('SET CHARACTER SET utf8'); mysqlQuery('SET COLLATION_CONNECTION="utf8_general_ci"');

mysqlQuery('SET NAMES utf8'); и последующие запросы настраивают правильные параметры взаимодействия с базой данных. В качестве аргумента, как говорилось выше, функция принимает правильные SQL запросы, которые выполняются в базе при помощи стандартной php функции mysql_query().

die($error_log); сработает в любом случае возникновения ошибки, поэтому при размещении на сервере это следует удалить из соображений безопасности. Кроме того, после удаления этого участка кода в случае ошибки сработает код ниже, выведет 404 страницу. Имена констант в mysql_connect( CONFIG_DBSERVER, CONFIG_DBUSER, CONFIG_DBPASSWORD ) or die(LANG_NO_CONNECT); говорят сами за себя, за исключением LANG_NO_CONNECT, но ее мы ниже определим в языковом файле. mysql_select_db( CONFIG_DATABASE, MYSQL_CONNECT )or die(LANG_NO_DB_SELECT); тоже не должен вызывать вопросов.

Создадим языковой файл "/libs/view/ru.php" и заполним следующим содержанием:

define("LANG_NO_CONNECT", "В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно."); define("LANG_NO_DB_SELECT", "В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно."); //постраничная техническая информация define('LANG_NO_TITLE', 'Заголовок не установлен'); define('LANG_NO_KEYWORDS', 'Ключевые слова не прописаны'); define('LANG_NO_DESCRIPTION', 'Описания страницы нет');

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


Контактная информация

E-Mail: oleynikww@gmail.com

Добавить комментарий

Комментарии пользователей