Вход Регистрация
Файл: 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&nbsp;символ.</p>';}
        if (
strlen ($db_prefix)    > '20')  {$error .= '<p>Префикс таблиц не должен превышать 20&nbsp;символов.</p>';}
        if (
strlen ($adm_login)    < '1')   {$error .= '<p>Логин администратора должен содержать хотя бы 1&nbsp;символ.</p>';}
        if (
strlen ($adm_login)    > '20')  {$error .= '<p>Логин администратора не должен превышать 20&nbsp;символов.</p>';}
        if (
strlen ($adm_password) < '6')   {$error .= '<p>Пароль администратора должен быть не короче 6&nbsp;символов.</p>';}
        if (
strlen ($site_name)    > '100') {$error .= '<p>Название сайта превышает 100&nbsp;символов.</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>Произошла ошибка при добавление таблиц в&nbsp;базу&nbsp;данных.</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 == trueprint_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>
Онлайн: 1
Реклама