Реализуем автоматическую установку CMS

 

Доброго времени суток дорогой читатель Блога RS! Сегодня, как я и обещал, мы напишем установщик для нашей CMS. В следующем же посте я Вам предоставлю скрипт блога и инструкцию по установки на локальный сервер. Хочу отметить один момент, я опять, при разработки кода, забыл ввести редактор мета тегов. Каждый раз про них забываю, а ведь такая важная вещь! Я сегодня собирался исправить эту свою оплошность, но после того как увидел сколько придется внести исправлений, решил внедрять новые строчки кода, по мере улучшения кода нашего блога. Сегодня мы сделаем первые шаги к этому, изменим структуру таблиц в базе данных, то есть добавим колонки где будут храниться наши мета теги, плюс к этому мы выведем мета теги на главной и контактной странице.

 

 

Что из себя представляет установщик? Эта некие формы, при заполнение которых мы изменим нашу информацию в БД и в определенных файлах нашей CMS. Если быть точнее то мы, сначала, с помощью введенной в форму информации соберем файл подключения к базе данных, после произведем подключение к ней, и создадим там нужные нам таблицы, плюс напишем стартовый пост на блоге, и создадим аккаунт администратора. На этом работа установщика закончится

По сути все это пустая трата времени, ибо намного проще записать в базу данных все в ручную, но вот что-то уж хочется как то до автоматизма довести эту процедуру

Первое, что нам понадобится, это собрать файл подключения к БД. В php это будет выглядеть примерно так: Откроем файл, запишем туда строки, и закроем этот файл. Реализовывать будем с помощью функции fopen. Почитайте про нее на php.su, лучше чем там я не поясню

После нам необходимо создать таблицы в базе данных. Реализуется это с помощью SQL запроса CREATE TABLE. Далее мы запишем в созданные таблицы стартовый пост, и создадим аккаунт администратора, разумеется реализуется это с помощью SQL запроса INSERT INTO. Давайте все по порядку

 

Создаем форму для заполнения ( ШАГ 1 )

 

Установщик нам предложит два раза заполнить две разных формы. Первая форма будет содержать информацию для подключения к БД. То есть нам необходимо узнать у пользователя имя базы данных, сервер, доменное имя, логин от базы и пароль. Приступим к реализации.

Создадим html код страницы в новом файле который я назвал installer.php и поместил в корень нашего блога:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- ГОЛОВА -->
<head>
<title>Установка RS-BLOG</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<!-- СТИЛИ -->
<link rel="stylesheet" href="style.css" type="text/css">
<!-- СТИЛИ -->
</head>
<!-- ГОЛОВА -->
<!-- ТЕЛО -->
<body>
<!-- ВЕРХНЯЯ БЕЛАЯ ПОЛОСКА -->
<div class="top_bg"><img class="logo" src="img/logo.png" border="0px"></div>
<!-- ВЕРХНЯЯ БЕЛАЯ ПОЛОСКА -->

<!-- ТАБЛИЦА -->
<table class="table" width="780px" height="700px" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="left" width="25px"></td>
<td class="center" valign="top">

<table width="730px" height="500px" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>

<!--ЛЕВЫЙ БЛОК-->
<td valign="top">
<p align="center" style="font-size:17px;">Добро пожаловать на установку CMS RS-BLOG!</p>
<!-- ШАГ 1 -->
<? if($step == 1){ ?>
html отрывок первого шага
<? } ?>
<!-- ШАГ 1 -->

<!-- ШАГ 2 -->
<? if($step == 2){ ?>
html отрывок второго шага
<? } ?>
<!-- ШАГ 2 -->

<!-- ШАГ 3 -->
<? if($step == 3){ ?>
html отрывок третьего шага
<? } ?>
<!-- ШАГ 3 -->
</td>
<!--ЛЕВЫЙ БЛОК-->
</tr>
</table>

</td>
<td class="right" width="25px"></td>
</tr>

<tr>
<td class="left_bottom" width="25px" height="25px"></td>
<td class="bottom"></td>
<td class="right_bottom" width="25px" height="25px"></td>
</tr>
</table>
<!-- ТАБЛИЦА -->

<!-- УЗОР В ПРАВОМ НИЖНЕМ УГЛУ -->
<div class="img_right_bottom"></div>
<!-- УЗОР В ПРАВОМ НИЖНЕМ УГЛУ -->
</body>
<!-- ТЕЛО -->
</html>

Можете не вникать в содержание html кода. Он скопирован из главного пользовательского шаблона нашего блога. Обратите внимание на вот эти строчки

                <!-- ШАГ 1 -->
<? if($step == 1){ ?>
html отрывок первого шага
<? } ?>
<!-- ШАГ 1 -->

<!-- ШАГ 2 -->
<? if($step == 2){ ?>
html отрывок второго шага
<? } ?>
<!-- ШАГ 2 -->

<!-- ШАГ 3 -->
<? if($step == 3){ ?>
html отрывок третьего шага
<? } ?>
<!-- ШАГ 3 -->

Именно с ними нам придется работать. Обратите внимание на условие if($step == 1){} Это условие, а именно эта переменная будет отвечать за вывод шагов. Объявляться переменная будет с помощью GET запроса

Давайте создадим форму для первого шага

                    <p style="margin-top:120px;" align="center">Шаг 1 - Подключение к БД</p>
<form action="installer.php" method="post" name="conf_DB">
<table width="310px" cellpadding="5" cellspacing="0" border="0" align="center">
<tr>
<td width="160px">Введите имя БД</td>
<td width="150px"><input class="input" style="width:150px;" type="text" name="nameDB" /></td>
</tr>
<tr>
<td width="160px">Введите имя сервера</td>
<td width="150px"><input class="input" style="width:150px;" type="text" name="nameSERVER" value="localhost" /></td>
</tr>
<tr>
<td width="160px">Доменное имя</td>
<td width="150px"><input class="input" style="width:150px;" type="text" name="server_root" value="http://имя.ru/" /></td>
</tr>
<tr>
<td width="160px">Логин БД</td>
<td width="150px"><input class="input" style="width:150px;" type="text" name="nameUSER" /></td>
</tr>
<tr>
<td width="160px">Пароль БД</td>
<td width="150px"><input class="input" style="width:150px;" type="password" name="passUSER" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input class="sub" type="submit" value="Далее" /></td>
</tr>
</table>
</form>

Обычная форма, как всегда прошу обратить внимание на атрибут action. Мы ссылаемся на тот же файл где расположена наша форма. ( Прошу прощения за, как Вам кажется лишние пробелы, от края в коде. Эти пробелы помогут Вам при копирование визуально определить где какой кусочек кода находится )

Я надеюсь Вы догадались, что эту форму необходимо вставить вместо вот этой строчки

html отрывок первого шага

Теперь объявим в самом вверху переменную $step

<?
if(isset($_GET['step']))$step = $_GET['step']; else $step = 1;
?>

Сейчас, если запустить наш файл, то мы будем лицезреть вот такой вид:

шаг 1 установщика

 

Обработчик первого шага

 

Первым делом определим, был ли послан запрос из формы ( Дальнейший код пишется в самом верху после определение переменной $step )

if(isset($_POST['nameDB']))$nameDB = $_POST['nameDB'];
if(isset($_POST['nameSERVER']))$nameSERVER = $_POST['nameSERVER'];
if(isset($_POST['nameUSER']))$nameUSER = $_POST['nameUSER'];
if(isset($_POST['passUSER']))$passUSER = $_POST['passUSER'];
if(isset($_POST['server_root']))$server_root = $_POST['server_root'];

После создается условие с помощью которого мы проверяем существуют ли эти переменные

if(isset($nameDB) & isset($nameSERVER) & isset($nameUSER) & isset($passUSER) & isset($server_root))
{
Код обработчика
}

Вот тут идет самое интересное, мы в переменную помещаем код, который запишем в файл db.php

$dbNEW = "<?php
\$nameDB = \"".$nameDB."\";//Название БД
\$nameSERVER = \"".$nameSERVER."\";//Сервер
\$nameUSER = \"".$nameUSER."\";//Имя пользователя БД
\$passUSER = \"".$passUSER."\";//Пароль пользователя БД
mysql_select_db(\$nameDB, mysql_connect(\$nameSERVER,\$nameUSER,\$passUSER));


if(isset(\$_GET[\"server_root\"])){\$server_root = \$_GET[\"server_root\"];unset(\$server_root);}
if(isset(\$_POST[\"server_root\"])){\$server_root = \$_POST[\"server_root\"];unset(\$server_root);}

\$server_root = \"".$server_root."\";
?>";

ВНИМАНИЕ: Тут необходимо внимательно просмотреть код. Вы должны понять, что в переменной $dbNEW содержится не какой то скрипт, который будет запускаться прям в файле установщика ( installer.php ), а по сути обычный текст, который мы поместим в файл подключение к БД ( db.php ), и именно там ( в db.php ) этот текст будет работать не как текст, а как скрипт. Надеюсь я Вас не запутал

Далее пишем следующий кусочек кода

    $DBfileUser = fopen("moduls/db.php", "w+");
fwrite($DBfileUser,$dbNEW);
fclose($DBfileUser);

$DBfileAdmin = fopen("admin/moduls/db.php", "w+");
fwrite($DBfileAdmin,$dbNEW);
fclose($DBfileAdmin);

Именно эти строчки открывают файл, и записывают туда содержание переменной $dbNEW! Как Вы могли заметить, мы редактируем два файла. Одни находится в пользовательской части блога, другой находится в папке admin. При заполнение формы мы получим примерно вот такой результат:

Далее мы подключаемся в базе данных

//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
include("moduls/db.php");
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)

И начинаем создавать SQL запросы на создание таблиц в БД. Код довольно длинный, но по сути однообразный

$blog = "CREATE TABLE IF NOT EXISTS blog (
id int(10) NOT NULL AUTO_INCREMENT,
text text NOT NULL,
title varchar(255) NOT NULL,
meta_d varchar(255) NOT NULL,
meta_k varchar(255) NOT NULL,
author varchar(255) NOT NULL,
date_b varchar(255) NOT NULL,
cat int(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;";

$comm = "CREATE TABLE IF NOT EXISTS comm (
id int(10) NOT NULL AUTO_INCREMENT,
author varchar(255) NOT NULL,
text text NOT NULL,
date_comm varchar(255) NOT NULL,
blog int(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;";

$menu = "CREATE TABLE IF NOT EXISTS menu (
id int(10) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
href varchar(255) NOT NULL,
position int(3) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;";

$mess_admin = "CREATE TABLE IF NOT EXISTS mess_admin (
id int(10) NOT NULL AUTO_INCREMENT,
login varchar(255) NOT NULL,
them varchar(255) NOT NULL,
date_g varchar(255) NOT NULL,
email varchar(255) NOT NULL,
text text NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;";

$user = "CREATE TABLE IF NOT EXISTS user (
id int(10) NOT NULL AUTO_INCREMENT,
login varchar(255) NOT NULL,
pass varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;";

$mainPage = "CREATE TABLE IF NOT EXISTS page (
id int( 1 ) NOT NULL AUTO_INCREMENT ,
title varchar(255) NOT NULL ,
meta_d text NOT NULL ,
meta_k text NOT NULL ,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;";

mysql_query($blog);
mysql_query($comm);
mysql_query($menu);
mysql_query($mess_admin);
mysql_query($user);
mysql_query($mainPage);

Давайте я поясню, откуда беруться эти запросы. Точнее откуда я их взял. При создание таблиц в phpMyAdmin прописывается sql запрос.

На последнем изображение виден sql запрос. Я по сути просто его скопировал в php код.

Так вот, мы создаем запросы в отдельных переменных, и при помощи mysql_query обрабатываем эти запросы, а именно создаем шесть таблиц в БД.

Обратите внимание, что таблица blog отличается от той таблицы которую мы создавали в посте "Пишем модуль Мини новости для нашей CMS" отличие лишь в том что мы добавляем еще две колонки, под мета теги.

Сейчас в рабочем варианте блога у нас только пять таблиц. А в установщики создаем шесть, почему? Потому, что в таблице page у нас будет храниться информация о сайте. Если короче, то мы именно с этих двух изменений в таблицах, мы начали реализовывать мета теги у нас на блоге!

На по следок, к обработчику первого шага, мы добавим запись первого поста в таблицу blog. Вот код

$title = "Добро пожаловать в CMS RS-BLOG";
$author = "RS-BLOG";
$txt = "Добро пожаловать администратор. Если Вы видите это сообщение, значит скрипт блога полностью настроен и готов к работе. Этот скрипт был создан исключительно для учебных целей. И это первая версия, она самая простая и пока не имеет должной защиты от взлома
<BR>
<BR>[end]
<BR>
<BR>Этот скрипт был выложен мною ( автором скрипта <a href=\"http://rio-shaman.ru/\">http://rio-shaman.ru/</a> ) с целью показать результат первых работ над блогом. В общем следите за новостями на моем блоге ( <a href=\"http://rio-shaman.ru/\">http://rio-shaman.ru/</a> ) и мы с Вами улучшим этот скрипт!
";

$date_day = date("d");//Определяем день
$date_month = date("m");//Определяем месяц
$date_year = date("Y");//Определяем год
$date_time = date("H:i");//Определяем часы и минуты
$date_cont = $date_day."/".$date_month."/".$date_year." ".$date_time;//Склеим все переменные в одну
//получим дату для записи в формате день/месяц/год часы:минуты

$add_post = mysql_query("INSERT INTO blog (title,author,text,date_b,cat)
VALUES ('$title','$author','$txt','$date_cont','0')");

$add_main_menu = mysql_query("INSERT INTO menu (name,href,position)
VALUES ('Главная','index.php','1')");

$add_contact_menu = mysql_query("INSERT INTO menu (name,href,position)
VALUES ('Контакты','index.php?contact=1','2')");

header("location: installer.php?step=2");
exit;

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

header("location: installer.php?step=2");
exit;

...второго шага.

На всякий случай поясню Вам куда вставляется весь этот код ( от редактирование файла db.php до переноса администратора на страницу второго шага )

if(isset($nameDB) & isset($nameSERVER) & isset($nameUSER) & isset($passUSER) & isset($server_root))
{
Код обработчика
}

Вставляется он вместо строчки: Код обработчика


Создаем форму для заполнения ( ШАГ 2 )

 

Форма приблизительно такая же, естественно заменил атрибуты name и атрибут action. Обратите на эти атрибуты особое внимание

                    <p style="margin-top:120px;" align="center">Шаг 2 - Сбор данных</p>
<form action="installer.php?step=2" method="post" name="conf_DB">
<table width="410px" cellpadding="5" cellspacing="0" border="0" align="center">
<tr>
<td width="160px">Название сайта</td>
<td width="250px"><input class="input" style="width:150px;" type="text" name="titleSITE" /></td>
</tr>
<tr>
<td width="160px" valign="top">Описание сайта</td>
<td width="250px"><textarea class="input" style="width:250px;height:60px;" name="discSITE"></textarea></td>
</tr>
<tr>
<td width="160px">Ключевые слова</td>
<td width="250px"><input class="input" style="width:250px;" type="text" name="keySITE" /></td>
</tr>
<tr>
<td width="160px">Логин админ.</td>
<td width="250px"><input class="input" style="width:150px;" type="text" name="nameADMIN" value="admin" /></td>
</tr>
<tr>
<td width="160px">Пароль админ.</td>
<td width="250px"><input class="input" style="width:150px;" type="password" name="passADMIN" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input class="sub" type="submit" value="Далее" /></td>
</tr>
</table>
</form>

Вставляется этот html код вместо

html отрывок второго шага

Лицезрим вот такой результат

 

Обработчик второго шага

 

Сразу после обработчика первого шага, пишем следующий код:

//Сохраняем данных присланные из второй формы
if(isset($_POST['titleSITE']))$titleSITE = $_POST['titleSITE'];
if(isset($_POST['discSITE']))$discSITE = $_POST['discSITE'];
if(isset($_POST['keySITE']))$keySITE = $_POST['keySITE'];
if(isset($_POST['nameADMIN']))$nameADMIN = $_POST['nameADMIN'];
if(isset($_POST['passADMIN']))$passADMIN = $_POST['passADMIN'];
//Сохраняем данных присланные из второй формы

//Если был послан запрос из второй формы
if(isset($titleSITE) & isset($discSITE) & isset($keySITE) & isset($nameADMIN) & isset($passADMIN))
{
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
include("moduls/db.php");
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)

$passADMIN = md5($passADMIN);//Зашифровываем пароль через функцию md5

$confIndex = mysql_query("INSERT INTO page (title,meta_d,meta_k) VALUES ('$titleSITE','$discSITE','$keySITE')");//Создаем запись в таблице page. Этим самым мы определим мета теги сайта
$addADMIN = mysql_query("INSERT INTO user (login,pass) VALUES ('$nameADMIN','$passADMIN')");//Создаем аккаунт администратора

header("location: installer.php?step=3");//Пересылаем пользователя на третий шаг
exit;
}

Я за комментировал почти каждую строчку. В этом шаге ничего сложного, и нового нет. Мы все проходили при разработки блога с нуля.

 

Третий шаг - оповещение

 

Вот код

                    <p style="margin-top:120px;font-size:16px;" align="center">Установка прошла успешно!</p>
<p style="color:red;font-size:15px;" align="center">Удалите файл installer.php из корня сайта</p>
<p align="center"><a href="index.php">На главную</a></p>

Он вставляется вместо: html отрывок третьего шага.

Назначение этого кусочка кода, просто оповестить администратора о том что процесс установки окончен.

 

Заключение

 

За сегодня мы с Вами создали установщик для наше CMS. Пост получился огромный, поэтому вывод мета тегов мы оставим на потом...

В следующем посте, как я и обещал, я выложу скрипт, и распишу как его поставить, правда теперь с автоматической установкой, это сделать будет не сложно Так, что не пропускайте новые посты, и подпишитесь на RSS ленту!

Если есть какие вопросы, отзывы, или просто есть, что сказать, говорите! С удовольствием почитаю/помогу!

Удачи Вам, на сегодня у меня все!

Исходник
 

Возможно Вам будут интересны следующие заметки

Комментарии (22)

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
kirill, 09 Января 2012 г. 11:23 пишет:
Гость
Интересный подход.
Я в своей CMS поступил по другому.
Сделал инсталлер в виде одного файла, который уже вытягивает все что надо с сервера.
Сервер же тоже небольшой скрипт, который готовит для клиента файлы прямо из SVN, структуру БД и генерит конфиги.
Все настройки задаются на сервере, чтобы не тащить лишний функционал на клиента.
Причем описанным способом происходит автоматической обновление этой самой CMS.
Просто и со вкусом :)
Rio-Shaman, 09 Января 2012 г. 12:14 пишет:
Автор
После таких комментариев в голову приходит мысль, а стоит ли вообще вести блог про программирование если в программирование рубишь только процентов на 20 :-D. С SVN работать не приходилось от чего чувствую себя зеленым зеленым :-D
Ответ для пользователя: kirill
kirill, 09 Января 2012 г. 12:43 пишет:
Гость
На самом деле такой блог нужен новичкам.
Я, например, если начну писать что-то подобное, то это получится учебник по WEB-разработке:)
Поэтому решил писать статьи на более отстраненные темы :)
Ответ для пользователя: Rio-Shaman
kirill, 09 Января 2012 г. 14:22 пишет:
Гость
Просмотрел листинги кода.
Есть небольшое замечание к безопасности.
Рекомендую посмотреть в сторону защиты от SQL инъекций:
http://php.net/manual/ru/security.database.sql-injection.php
Ответ для пользователя: Rio-Shaman
Rio-Shaman, 09 Января 2012 г. 15:33 пишет:
Автор
Этим установщиком пользоваться будет только администратор, после чего его необходимо удалить. В самом блоге защиты пока ноль, в этом разделе буду это постепенно исправлять
Ответ для пользователя: kirill
slava, 10 Января 2012 г. 07:34 пишет:
Гость
Всем привет. Правильное дело Rio-Shaman делаешь. Лично я с тобой и за твое творение обеими руками и мое мнение: верной дорогой идешь друг. Ни шагу назад, ни сантиметра вправо =). Есть конечно дополнения или лучше наверное сказать предложения по развитию продукта, в общем определим как пообщаемся. Собственно с этой целью и пишу =) почта в базе, жду ответа с контактом, крайне желателен скайп. Всех с новы годом и рождеством.
Сергей, 12 Июня 2012 г. 02:57 пишет:
Гость
Скажите, с чем может быть связана первая ошибка
header("location: installer.php?errorinstal=1");//выводим ошибку
выводится 1 ошибка. Делал все так как у вас написано.
Т.е. я сейчас использую два файла всего installer.php и db.php
Ошибка подключения с базой данных. Сначала ссылалось на 6 строку из файла db.php там где
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
а сейчас на эту первую ошибку ссылается.
В тестировании я использую денвер и сторонний хостинг везде проблема таже
Получается что таблица не создается что ли
Ответ для пользователя: kirill
Rio-Shaman, 12 Июня 2012 г. 12:56 пишет:
Автор
Вы уверены что Вы ввели правильное имя базы данных, логин, пароль пользователя и сервер? Так как других вариантов я не вижу.
Ответ для пользователя: Сергей
dima, 04 Ноября 2012 г. 16:16 пишет:
Читатель
Как заставить работать этот код :
$DBfileUser = fopen("moduls/db.php", "w+");
fwrite($DBfileUser,$dbNEW);
fclose($DBfileUser);

$DBfileAdmin = fopen("admin/moduls/db.php", "w+");
fwrite($DBfileAdmin,$dbNEW);
fclose($DBfileAdmin);
Ось Ubuntu 12.10...
Rio-Shaman, 04 Ноября 2012 г. 17:03 пишет:
Автор
Очень может быть, что у файла db.php не стоят права на запись. Выставите права на данные файлы 777, скорее всего поможет
Ответ для пользователя: dima
dima, 04 Ноября 2012 г. 17:43 пишет:
Читатель
Что то не подумал))) надо проверить
Ответ для пользователя: Rio-Shaman
NiunCMS, 11 Января 2013 г. 20:25 пишет:
Гость
У меня проблема, с кодировкой! при установки и нужно бы вписать бы в installer.php
строки:
mysql_query("set character_set_client ='cp1251'");
mysql_query("set character_set_results ='cp1251'");
mysql_query("set collation_connection ='cp1251_general_ci'");
но при их вставки, и входе на installer.php то пишет ошибка сервера, пробовал закомментировать строки но не получаеться, помогите Rio-shaman))) у меня одна надежда только на вас)
NiunCMS, 11 Января 2013 г. 20:45 пишет:
Гость
Прошу, не отвечать на выше сказанный комментарий)
но у меня проблема :( я вбил в переменную несколько строчек, и при переходе на страницу установки, он пишет Ошибка сервера вот демо: niuncms.vrozetke.com
Скачайте посмотрите что не то я сделал: http://rghost.ru/42921934
Rio-Shaman, 11 Января 2013 г. 21:23 пишет:
Автор
Вот, исправил:
http://rio-shaman.ru/download/download_2122172788.rar
Теперь ошибки нет, но не знаю, будет ли инсталятор работать
Ответ для пользователя: NiunCMS
NiunCMS, 11 Января 2013 г. 23:36 пишет:
Гость
Спасибо) тестил работает)
но я его переделал с дизайном, и при установки, сделал первую страницу это Лицензионное соглашение
и после установки захожу на сайт а он пустой!
заглядываю в phpMyAdmin а база пустая :( скачайте посмотрите что я пропустил добавить:
http://rghost.ru/42927512
Ответ для пользователя: Rio-Shaman
NiunCMS, 12 Января 2013 г. 16:02 пишет:
Гость
ну прошу вас Rio-Shaman помогите!
последний раз) больше вас тревожить не буду, так-же рекомендую в строчку URL сайта добавить:
http://<?php echo $_SERVER['SERVER_NAME']; ?>/
как так добавляет автоматически URL адрес веб-сайта :)
Ответ для пользователя: Rio-Shaman
Rio-Shaman, 12 Января 2013 г. 20:29 пишет:
Автор
К сожалению, я сейчас, пока, не могу заниматься Вашими проблемами... Времени нету =(
Ответ для пользователя: NiunCMS
NiunCMS, 12 Января 2013 г. 20:33 пишет:
Гость
А когда освабодитесь сможете мне помочь?)
Ответ для пользователя: Rio-Shaman
Rio-Shaman, 13 Января 2013 г. 00:55 пишет:
Автор
Идеально было бы если бы Вы сами разобрались, что у Вас не так =) Будет свободное время, я гляну...
Ответ для пользователя: NiunCMS
NiunCMS, 13 Января 2013 г. 16:36 пишет:
Гость
Уже разобралься) только осталось уязвимости устранить) как так заметил, что скрипт вообще нечего не проверяет
Ответ для пользователя: Rio-Shaman
FLASH911, 24 Июня 2014 г. 20:52 пишет:
Читатель
У себя в своей CMS сделал примерно так же, однако не уверен верно ли это? Когда мы переписываем db.php (в моем случае config.php), мы задаем изначально права на файл 777, т.к. Иначе запись невозможна. Однако как быть с уязвимостью в данном случае? Ведь 777 способствует шеллам и прочим гадостям.
Алексей, 27 Июня 2014 г. 08:36 пишет:
Автор
Для доступа владельца достаточно прав 644. С этими правами владелец может делать все что угодно, остальные только читать
Ответ для пользователя: FLASH911