Subbay.ru
Четверг, 23.11.2017, 17:10
Мини-чат

Вход на сайт

Архив записей

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » 2016 » Ноябрь » 13 » Создание инсталятора для CMS
14:15
Создание инсталятора для CMS

Итак, сегодня поговорим про то, как можно быстро создать простенький инсталятор для CMS (Content Management System) со всеми необходимыми функциями.

Какие же функции должен выполнять наш инсталятор?

  1. Перенаправлять на инсталяцию, если система не установлена
  2. Проверять подключение к базе данных
  3. Запись информации о подключении к БД в текстовый файл
  4. Создание таблиц системы из дампа
  5. Создание учетной записи администратора

Приступим к делу.

Итак создаем папку install в корневой директории. В ней создаем файлы class.installer.php и install.php.

1. Создаем класс для инталятора и пишем первую функцию для перенаправления на установку системы.

class installer
{
 function query_install()
 {

//Если вызывающая этот метод страница не является инсталлятором,
//то значит CMS не установлена и необходимо сделать перенаправление
// на инсталлятор

 if ($_SERVER['SCRIPT_NAME']!='/install/index.php'){ 

//Генерируем адресс инсталлятора
 $path = "http://".$_SERVER['SERVER_NAME']."/install/index.php";
//Перенаправляем страницу на сгенерированный адресс
 header("Location:$path");
 }
//В случае если CMS установлена происходит перенаправление на
//осноновную страницу и вызываеющая страница является инсталлятором,
//то происходит перенаправление на корневой файла index.php
 if ($_SERVER['SCRIPT_NAME']=='/install/index.php'){ 

//Генерируем адресс
 $path = "http://".$_SERVER['SERVER_NAME']."/index.php";
//Перенаправляем страницу на сгенерированный адресс
 header("Location:$path"); 
 }
 }
}

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

require_once("install/class.Installer.php");
$installer=new installer();
$installer->query_install();

2. Далее в теле этого класса создаем функцию для проверки подключения к БД, которая будет принимать параметры, которые будет вводить пользователь.

//Проверка на правильность ввода
function validation($dbhost,$dbname,$dblogin,$dbpass)
 {
//Объявляем перемнную, обозначающую код ошибки.
//на первом этапе она равна 0, что значит - ошибок нет
 $error=0;
//Если хоть одно из полей не введено
 if ($dbhost=="" or $dbname=="" or $dblogin=="")
 {
//Присваиваем код ошибки 1
 $error=1;
//если введены все поля
 }else{
//Пытаемся подключиться к серверу баз данных.
//Знак @ значит, что если подключиться не удастся,
//то выводить ошибку в окно браузера не нужно
 $subd_con = @mysql_connect($dbhost,$dblogin,$dbpass);
 if (!$subd_con) //если подключиться не удалось
 {
 $error=2; //Присваиваем код ошибки 2
 }else{
 //На этом этапе мы узнаем, доступна ли выбранная база данных
 if (!@mysql_select_db($dbname,$subd_con))
 {
 //Если нет, то код ошибки - 3
 $error=3;
 }

 }
 }
 return $error;
 }

3. Для реализации инсталятора у вас должен быть создан конфиг-файл, в который можно будет записать параметры подключения к БД. Такие данные нельзя держать в таблице, т.к. мы просто не сможем к ней подключиться. Поместим его в корневую директорию и назовем config.php.
Для работы с этим файлом потребуется назначить права доступа равные 0777.
Теперь в теле этого же класса пишем функцию для работы с файлом конфига.

function writethis($dbhost, $dbdatabase, $dbuser, $dbpassword)
 {
 $file = fopen ("/config1.php","r+");
 $str = '
$CONFIG = array(
"db_host" => "'.$dbhost.'",
"db_database" => "'.$dbdatabase.'",
"db_user" => "'.$dbuser.'",
"db_password" => "'.$dbpassword.'"
);
 ';

 fputs ($file, $str);
 fclose ($file);
 }

4. Для создания дампа таблиц можно воспользоваться программой phpMyAdmin. Выбираем в проге БД и кликаем экспорт и вот — перед нами текстовый файл со всеми запросами. Перемещаем этот файл в папку с инсталятором и называем его dump.sql. Пишем функцию для создания таблиц из дампа.

function dump($host,$database,$user,$password)
 {

 $dbhost=$host;
 $dblogin=$user;
 $dbpass=$password;
 $dbname=$database;

 $fname="dump.sql";
 //Подключаемся к серверу баз данных
 $db = mysql_connect ($dbhost, $dblogin, $dbpass);
 mysql_select_db ($dbname, $db);

 if (!file_exists($fname)) die ("Файл $fname не существует!");
 $fp = fopen ($fname, "r");
 $buffer = fread($fp, filesize($fname));
 fclose ($fp);

 $prev = 0;
 while ($next = strpos($buffer,";",$prev+1))
 {
 $i++;
 $a = substr($buffer,$prev+1,$next-$prev);
 mysql_query($a, $db);
 $prev = $next;
 }
 }

Эта функция выполняет запросы из дампа поочередно и таким образом создает нужную нам структуру.

5. Создание учетной записи администратора. Этот механизм реализуется везде по разному и зависит непосредственно от структуры таблиц.

Ну вот практически и все! Класс для работы с инсталятором готов.
Осталось только написать дизайн и обращение к функциям. Все это будет в файле index.php.
Для пошаговой навигации используем оператор switch. Вводя переменную через строку браузера (www.yourdomain.ru/install/index.php?page=номер_страницы), мы можем перешагивать на различные этапы инсталяции.

Просмотров: 12 | Добавил: Rockfeller
Всего комментариев: 0
avatar
Бегущая строка в HTMLWWW.SUBBAY.RU
Copyright Subbay.ru © 2017
uCoz