Итак, сегодня поговорим про то, как можно быстро создать простенький инсталятор для CMS (Content Management System) со всеми необходимыми функциями.
Какие же функции должен выполнять наш инсталятор?- Перенаправлять на инсталяцию, если система не установлена
- Проверять подключение к базе данных
- Запись информации о подключении к БД в текстовый файл
- Создание таблиц системы из дампа
- Создание учетной записи администратора
Приступим к делу.Итак создаем папку install в корневой директории. В ней создаем файлы class.installer.php и install.php.
1. Создаем класс для инталятора и пишем первую функцию для перенаправления на установку системы.
class installer
{
function query_install()
{
//Если вызывающая этот метод страница не является инсталлятором,
//то значит CMS не установлена и необходимо сделать перенаправление
// на инсталлятор
if ($_SERVER['SCRIPT_NAME']!='/install/index.php'){
//Генерируем адресс инсталлятора
$path = "https://".$_SERVER['SERVER_NAME']."/install/index.php";
//Перенаправляем страницу на сгенерированный адресс
header("Location:$path");
}
//В случае если CMS установлена происходит перенаправление на
//осноновную страницу и вызываеющая страница является инсталлятором,
//то происходит перенаправление на корневой файла index.php
if ($_SERVER['SCRIPT_NAME']=='/install/index.php'){
//Генерируем адресс
$path = "https://".$_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=номер_страницы), мы можем перешагивать на различные этапы инсталяции.
Скачивание файлов доступно только зарегистрированным пользователям