Файл: install/index.php
Строк: 217
<?php
/*
################################################################################
### ###
### Cafe CMS ###
### Установщик системы ###
### http://cms.rad-li.ru ###
### mailto:rad-li@ya.ru ###
### ###
################################################################################
*/
include $_SERVER['DOCUMENT_ROOT'] . '/inc/functions.php';
define (VERSION, "0.5.1"); // текущая версия CMS
// если файл настроек существует - прерываем установку CMS
if (file_exists ($_SERVER['DOCUMENT_ROOT'] . '/config.php')) {
exit (print_done ('Cafe CMS уже установлена на вашем сайте. В целях безопасности удалите папку /install.'));
}
// если передан параметр install, т. е. кнопка "установить" была нажата, начинаем установку
if ($_POST['install']) {
$db_server = $_POST['db_server'];
$db_name = $_POST['db_name'];
$db_login = $_POST['db_login'];
$db_password = $_POST['db_password'];
$db_prefix = $_POST['db_prefix'];
$adm_login = $_POST['adm_login'];
$adm_password = $_POST['adm_password'];
$adm_mail = $_POST['adm_mail'];
$site_name = $_POST['site_name'];
$now_date = time ();
$error = '';
// проверяем корректность заполнения полей и пробуем подключиться к бд с указанными данными
if (!@mysql_connect ($db_server, $db_login, $db_password)) {
$error .= '<p>Не удалось подключиться к базе данных.</p>';
} else {
if (strlen ($db_prefix) < '1') {$error .= '<p>Префикс таблиц должен содержать хотя бы 1 символ.</p>';}
if (strlen ($db_prefix) > '20') {$error .= '<p>Префикс таблиц не должен превышать 20 символов.</p>';}
if (strlen ($adm_login) < '1') {$error .= '<p>Логин администратора должен содержать хотя бы 1 символ.</p>';}
if (strlen ($adm_login) > '20') {$error .= '<p>Логин администратора не должен превышать 20 символов.</p>';}
if (strlen ($adm_password) < '6') {$error .= '<p>Пароль администратора должен быть не короче 6 символов.</p>';}
if (strlen ($site_name) > '100') {$error .= '<p>Название сайта превышает 100 символов.</p>';}
}
// создаем и записываем настройки в файл config.php в коневом каталоге
$w_string = '<?php
define ("DB_SERVER", "' . $db_server . '"); // сервер базы данных
define ("DB_NAME", "' . $db_name . '"); // имя базы данных
define ("DB_PREFIX", "' . $db_prefix . '"); // префикс для таблиц
define ("DB_LOGIN", "' . $db_login . '"); // логин для доступа к БД
define ("DB_PASSWORD", "' . $db_password . '"); // пароль для доступа к БД
define ("SITE_NAME", "' . $site_name . '"); // название сайта
define ("TEMPLATE", "simple"); // тема оформления
define ("VERSION", "' . VERSION . '"); // текущая версия CMS
define ("LOG_LEVEL", "0"); // уровень детализации журнала
?>';
// если нет ошибок в предыдущем шаге, сохраняем файл с настройками сайта
if (empty ($error)) {
if ($fp = fopen ($_SERVER['DOCUMENT_ROOT'] . '/config.php', 'w+')) {
if (fwrite ($fp, $w_string)) {
fclose ($fp);
}
} else {
$error .= '<p>Невозможно сохраниить файл настроек.</p>';
}
}
// если нет ошибок в предыдущем шаге, импортируем данные в базу данных
if (empty ($error)) {
/**
* Дамп таблицы pages
* в этой таблице будут храниться статичные страницы
* id - порядковый номер записи, автоинкремент и примари,
* date - дата сохранения записи,
* url - для каждой записи можно будет присвоить свой url,
* title - заголовок записи,
* text - текст страницы
*/
$creat_table_pages = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_pages` (
`id` INT(5) AUTO_INCREMENT PRIMARY KEY,
`date` INT(10),
`url` VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
`title` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci,
`text` VARCHAR(40000) CHARACTER SET utf8 COLLATE utf8_general_ci,
`position` VARCHAR(4),
`keywords` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
`description` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
`pid` INT(5)
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы users
* в этой таблице будут храниться профили пользователей
* id - порядковый номер записи,
* login - логин пользователя,
* password - пароль пользователя,
* reg_date - дата регистрации,
* status - статус пользователя: 0 - не активен, 1 - админ, 2 - модератор, 3 - пользователь
*/
$creat_table_users = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_users` (
`id` INT(5) AUTO_INCREMENT PRIMARY KEY,
`login` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci,
`password` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci,
`email` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
`reg_date` INT(10),
`status` INT(1)
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы photos
* в этой таблице будет храниться информация о загруженных фотографиях
* id - порядковый номер записи,
* title - название фотографии,
* description - описание фотографии,
* album - в какой альбом загружена фотография,
* date - дата загрузки фотографии в timestamp
*/
$creat_table_photos = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_photos` (
`id` INT(5) AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
`description` VARCHAR(400) CHARACTER SET utf8 COLLATE utf8_general_ci,
`album` INT(3),
`date` INT(10)
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы albums
* в этой таблице будет храниться информация о созданных альбомах
* id - порядковый номер записи,
* title - название альбома,
* description - описание альбома,
* url - адрес альбома
*/
$creat_table_albums = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_albums` (
`id` INT(3) AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci,
`description` VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
`url` VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы logs
* в этой таблице будут храниться журнал действий
* id - порядковый номер записи, автоинкремент и примари,
* user - id пользователя,
* date - дата и время,
* type - тип (описание) действия,
* status - результат действия (успех/ошибка),
* ip - текущий ip-адрес
*/
$creat_table_logs = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_logs` (
`id` INT(10) AUTO_INCREMENT PRIMARY KEY,
`user` INT(5),
`date` INT(10),
`type` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
`status` INT(1),
`ip` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы posts
* в этой таблице будут храниться записи
* id - порядковый номер записи, автоинкремент и примари,
* date - дата и время,
* login - автор записи = логин текущего пользователя,
* status - статус записи: опубликовано или черновик,
* title - заголовок записи,
* text - содержимое записи,
* type - название раздела,
* category - категории в выбранном разделе,
* keywords - ключевые слова,
* descriptions - описание страницы,
* url - адрес записи,
* source - источник информации
*/
$creat_table_posts = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_posts` (
`id` INT(8) AUTO_INCREMENT PRIMARY KEY,
`date` INT(10),
`login` VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci,
`status` INT(1),
`title` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
`text` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
`type` VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci,
`category` VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci,
`keywords` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
`description` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
`url` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
`source` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы posts_categories
* в этой таблице будут храниться названия разделов
* id - порядковый номер раздела, автоинкремент и примари,
* title - заголовок раздела
* url - адрес раздела
*/
$creat_table_posts_categories = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_posts_categories` (
`id` INT(3) AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci,
`url` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы posts_subcategories
* в этой таблице будут храниться названия категорий (подразделов)
* id - порядковый номер раздела, автоинкремент и примари,
* title - заголовок категории
* url - адрес категории
*/
$creat_table_posts_subcategories = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_posts_subcategories` (
`id` INT(3) AUTO_INCREMENT PRIMARY KEY,
`pid` INT(3),
`title` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci,
`url` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
/**
* Дамп таблицы stats
* в этой таблице будут храниться счетчики
* id - порядковый номер счетчика, автоинкремент и примари,
* title - название счетчика,
* date - дата и время установки,
* code - код счетчика,
* status - статус счетчика (активен/не автивен)
*/
$creat_table_stats = "CREATE TABLE IF NOT EXISTS `" . $db_name . "`.`" . $db_prefix . "_stats` (
`id` INT(2) AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci,
`date` INT(10),
`code` VARCHAR(4000) CHARACTER SET utf8 COLLATE utf8_general_ci,
`status` INT(1)
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
// шифруем пароль администратора
$md5_adm_password = md5 ($adm_password);
// учетная запись администратора
$add_admin = "INSERT " . $db_name . "." . $db_prefix . "_users (
login, password, email, reg_date, status)
VALUES (
'$adm_login', '$md5_adm_password', '$adm_mail', '$now_date', '1')";
// создаем таблицы и добавляем администратора
if (empty ($error) &&
(@mysql_query ($creat_table_pages ) &&
@mysql_query ($creat_table_users ) &&
@mysql_query ($creat_table_photos) &&
@mysql_query ($creat_table_albums) &&
@mysql_query ($creat_table_logs ) &&
@mysql_query ($creat_table_posts ) &&
@mysql_query ($creat_table_stats ) &&
@mysql_query ($creat_table_posts_categories) &&
@mysql_query ($creat_table_posts_subcategories) &&
@mysql_query ($add_admin))) {
$install = 'ok';
} else {
$error .= '<p>Произошла ошибка при добавление таблиц в базу данных.</p>';
if (file_exists ($_SERVER['DOCUMENT_ROOT'] . '/config.php')) {
@unlink ($_SERVER['DOCUMENT_ROOT'] . '/config.php');
}
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Установка системы управления сайтом Cafe CMS</title>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link rel="stylesheet" type="text/css" href="/install/style.css">
</head>
<body>
<?php
if ($install == 'ok') {
?>
<h1>Установка Cafe CMS успешно завершена!</h1>
<div class="installed">
<p>Теперь ваш сайт доступен по адресу <a href="http://<?php echo $_SERVER['SERVER_NAME']; ?>"><?php echo $_SERVER['SERVER_NAME']; ?></a></p>
<p>Перейти <a href="/admin/">в панель управления сайтом</a>.</p>
<p>В целях безопасности не забудьте удалить папку /install.</p>
</div>
<?php
} else {
if ($error == true) print_error ($error);
?>
<h1>Установка Cafe CMS</h1>
<form action="" method="POST">
<div class="left">
<h2>Настройка базы данных</h2>
<p><label>Сервер базы данных:<input type="text" class="input-text" name="db_server" <?php if($db_server) {echo 'value="' . $db_server . '"';}else{echo 'value="localhost"';}?>></label></p>
<p><label>Название базы данных:<input type="text" name="db_name" <?php if($db_name) {echo 'value="' . $db_name . '"';}?>></label></p>
<p><label>Имя пользователя:<input type="text" name="db_login" <?php if($db_login) {echo 'value="' . $db_login . '"';}?>></label></p>
<p><label>Пароль:<input type="password" name="db_password" id="db_pass" <?php if($db_password) {echo 'value="' . $db_password . '"';}?>></label></p>
<p><label>Префикс для таблиц:<input type="text" name="db_prefix" <?php if($db_prefix) {echo 'value="' . $db_prefix . '"';}else{echo 'value="cafe"';}?>></label></p>
</div>
<div class="right">
<h2>Регистрация администратора сайта</h2>
<p><label>Логин:<input type="text" name="adm_login" <?php if($adm_login) {echo 'value="' . $adm_login . '"';}?>></label></p>
<p><label>Пароль:<input type="password" name="adm_password" id="adm_pass" <?php if($adm_password) {echo 'value="' . $adm_password . '"';}?>></label></p>
<p><label>E-mail:<input type="text" name="adm_mail" <?php if($adm_mail) {echo 'value="' . $adm_mail . '"';}?>></label></p>
<h2 class="site">Настройка сайта</h2>
<p><label>Название сайта:<input type="text" name="site_name" <?php if($site_name) {echo 'value="' . $site_name . '"';}?>></label></p>
<p><input class="button" type="submit" name="install" value="установить">
<a id="pass-view" style="cursor:pointer;color:#1d8ce0" onclick="if (document.getElementById ('adm_pass' && 'db_pass').type == 'password'){
document.getElementById ('adm_pass').type = 'text';
document.getElementById ('db_pass').type = 'text';
document.getElementById ('pass-hide').style.display = 'inline';
document.getElementById ('pass-view').style.display = 'none';
}">показать пароли</a>
<a id="pass-hide" style="cursor:pointer;color:#1d8ce0;display:none" onclick="if (document.getElementById ('pass-hide').style.display == 'inline') {
document.getElementById ('pass-hide').style.display = 'none';
document.getElementById ('pass-view').style.display = 'inline';
document.getElementById ('adm_pass').type = 'password';
document.getElementById ('db_pass').type = 'password';
}">скрыть пароли</a></p>
</div>
</form>
<?php
}
?>
<div class="footer">
<p>Система управления сайтом <a href="http://cms.rad-li.ru">Cafe CMS</a> ver. <?php echo VERSION ?>.</p>
</div>
</body>
</html>