Имеется скрипт install.php для установки моего движка.
<?php
header("Content-Type: text/html; charset=utf-8");
function anti_xss_for_user($var) // функция отчистки от xss-атка любой переменной
{
$var = htmlspecialchars(strip_tags($var), ENT_QUOTES);
return $var;
}
$dir_design = 'gs_engine/design/shablon1/'; // шаблон при установке и путь к нему
if ($_POST['sent'] == 1)
{
if (!$_POST['name']) { $error .= '<br>Наобходимо заполнить поле "Название"!'; }
if (!$_POST['slogan']) { $error .= '<br>Наобходимо заполнить поле "Слоган"!'; }
if (!$_POST['url']) { $error .= '<br>Наобходимо заполнить поле "URL"!'; }
if (!$_POST['index']) { $error .= '<br>Наобходимо заполнить поле "Имя главного файла"!'; }
if (!$_POST['login']) { $error .= '<br>Наобходимо заполнить поле "Логин админа"!'; }
if (!$_POST['pass']) { $error .= '<br>Наобходимо заполнить поле "Пароль админа"!'; }
if (!$_POST['mail_admin']) { $error .= '<br>Наобходимо заполнить поле "E-mail админа"!'; }
if (!$_POST['mail_engine']) { $error .= '<br>Наобходимо заполнить поле "E-mail движка"!'; }
if (!$_POST['db_server']) { $error .= '<br>Наобходимо заполнить поле "БД: имя сервера"!'; }
if (!$_POST['db_user']) { $error .= '<br>Наобходимо заполнить поле "БД: имя пользователя"!'; }
if (!$_POST['db_pass']) { $error .= '<br>Наобходимо заполнить поле "БД: пароль"!'; }
if (!$_POST['db_name']) { $error .= '<br>Наобходимо заполнить поле "БД: имя базы"!'; }
if (!$error)
{
// формируем текст для записи в файл variables.php
$insert_to_file_variables = '<?php
$encoding = \'utf-8\'; // кодировка
$meta = \'\'; // мета-тэги
$name = \''.str_replace("'", '"', $_POST['name']).'\'; // название сайта
$slogan = \''.str_replace("'", '"', $_POST['slogan']).'\'; // слоган
$url = \''.str_replace("'", '"', $_POST['url']).'\'; // URL
$index = \''.str_replace("'", '"', $_POST['index']).'\'; // страница новостей (постов)
$index_folder = \''.str_replace("'", '"', $_POST['index_folder']).'\'; // корневая папка сайта
$bottom = \'© Все права защищены\'; // подвал страницы
$design = \'shablon1\'; // дизайн
$mail_admin = \''.str_replace("'", '"', $_POST['mail_engine']).'\'; // почта админа
// полка
$cloud = \'<a href="admin.php">Админ-панель</a><br><a href="rss.php">RSS-канал</a><br><a href="map.php">Карта сайта</a><br><a href="contact.php">Обратная связь</a>\';
//меню
$menu = \'\';
//рубрики (категории)
$rubrics = \'\';
// облако тэгов
$cloud_of_tags = \'\';
?>';
// запись в файл variables.php
$file = fopen ("gs_engine/includes/variables.php","w");
fputs ($file, $insert_to_file_variables);
fclose ($file);
// формируем текст для записи в файл conf.php
$insert_to_file_conf = '<?php
$db[\'db_table\'] = \'gs_engine_posts\'; // таблица в БД
$db[\'db_table_cat\'] = \'gs_engine_category\'; // таблица категорий постов в БД
$db[\'db_table_menu\'] = \'gs_engine_menu\'; // таблица меню в БД
$db[\'db_table_tags\'] = \'gs_engine_tags\'; // таблица тэгов в БД
$db[\'db_table_admin_meta\'] = \'gs_engine_admin_meta\'; // таблица мета-тэгов для админки
$db[\'db_table_users\'] = \'gs_engine_users\'; // таблица пользователей в БД
$db[\'db_server\'] = \''.$_POST['db_server'].'\'; // сервер БД
$db[\'db_user\'] = \''.$_POST['db_user'].'\'; // имя пользователя БД
$db[\'db_pass\'] = \''.$_POST['db_pass'].'\'; // пароль БД
$db[\'db_name\'] = \''.$_POST['db_name'].'\'; // имя базы
$db[\'post_in_page\'] = 10; // количество постов на страницу
$db[\'servers_cache\'] = 50; // сколько страниц кэшировать
$db[\'chpu\'] = \'on\'; // ЧПУ (on - включены; off - выключены)
$db[\'comment\'] = \'on\'; // комментарии (on - включены; off - выключены комменты; other - включены внешние комменты от соцсетей)
$db[\'comments_in_page\'] = \'10\'; // количество комментариев на страницу
?>';
// запись в файл conf.php
$file = fopen ("gs_engine/includes/conf.php","w");
fputs ($file, $insert_to_file_conf);
fclose ($file);
// формируем текст для записи в файл session_protection.php
$session_key = md5(uniqid(rand(),true)); // генерируем случайное число, которое будет ключем сессии
$insert_to_file_session_protection = '<?php
$session_protection = \''.$session_key.'\'; // ключ для защиты сессии
?>';
// запись в файл admin.php
$file = fopen ("gs_engine/includes/session_protection.php","w");
fputs ($file, $insert_to_file_session_protection);
fclose ($file);
// время в формате день, месяц, год, часы, минуты
$time_unix = time();
$time = date('d.m.Y в H:i', $time_unix);
$connect = mysqli_connect($_POST['db_server'], $_POST['db_user'], $_POST['db_pass'], $_POST['db_name']); // коннект к БД
mysqli_set_charset($connect, 'utf8');
// запись в БД
$sql[0] = "
CREATE TABLE `gs_engine_posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`name_chpu` varchar(255) NOT NULL,
`thumbs` varchar(2000) NOT NULL,
`text` mediumtext NOT NULL,
`author` varchar(255) DEFAULT NULL,
`link` varchar(255) DEFAULT NULL,
`metatags` varchar(1000) DEFAULT NULL,
`tags` varchar(500) DEFAULT NULL,
`category` varchar(255) DEFAULT NULL,
`count_views` int(11) DEFAULT '0',
`count_comments` int(11) DEFAULT '0',
`time` varchar (255) NOT NULL,
`time_unix` int(15) NOT NULL,
`ip` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`),
KEY `tags` (`tags`),
KEY `category` (`category`)
) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 AUTO_INCREMENT=0
";
$sql[1] = "
INSERT INTO `gs_engine_posts` (`id`, `name`, `name_chpu`, `thumbs`, `text`, `author`, `link`, `metatags`, `tags`, `category`, `count_views`, `count_comments`, `time`, `time_unix`, `ip`) VALUES
(1, 'Спасибо за Ваш выбор!', 'spasibo_za_vash_vibor', 'Большое спасибо за то, что выбрали GS SuperBlog. Надеюсь, мы Вас не разочаруем. <br>После установки не забудьте войти в <a href=admin.php>админ-панель</a> и сделать все необходимые настройки.', 'Большое спасибо за то, что выбрали GS SuperBlog. Надеюсь, мы Вас не разочаруем. <br>После установки не забудьте войти в <a href=admin.php>админ-панель</a> и сделать все необходимые настройки.', 'Команда поддержки GS.', '', '', '', '', 0, 0, '".$time."', ".$time_unix.", '188.187.61.99');
";
$sql[2] = "
CREATE TABLE `gs_engine_category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0";
$sql[3] = "
CREATE TABLE `gs_engine_menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`link` varchar(255),
`name` varchar(255) NOT NULL,
`static` varchar (255),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0";
$sql[4] = "
CREATE TABLE `gs_engine_tags` (
`tags` varchar(255) NOT NULL,
`rating` int(11),
PRIMARY KEY (`tags`),
KEY `rating` (`rating`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0";
$sql[5] = "
CREATE TABLE `gs_engine_admin_meta` (
`id` int(11) NOT NULL,
`keywords` varchar(255),
`description` varchar(255),
`other` varchar(255),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0";
$sql[6] = "
CREATE TABLE `gs_engine_files` (
`way` varchar(512) NOT NULL,
`time_unix` int(11) NOT NULL,
`time` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`comment` varchar(255) NOT NULL,
PRIMARY KEY (`time_unix`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0";
$sql[7] = "
CREATE TABLE `gs_engine_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255),
`rights` varchar(255) NOT NULL,
`date_of_registration` varchar(255),
`last_visit` varchar(255),
`count_of_comments` int(11) DEFAULT '0',
`count_of_posts` int(11) DEFAULT '0',
`count_of_personal_letters` int(11) DEFAULT '0',
`show_email` varchar(255) DEFAULT 'no',
`signature` varchar(255),
`link_to_social_network` varchar(512),
`contact` varchar(512),
`notepad` mediumtext,
`secret_code` varchar(255),
`ip_of_registration` varchar(255),
`ip_of_entry` varchar(255),
`avatar` varchar(255),
PRIMARY KEY (`id`),
KEY `login` (`login`),
KEY `email` (`email`),
KEY `rights` (`rights`),
KEY `secret_code` (`secret_code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0";
// генерируем случайный секретный код для юзера
$secret_code = uniqid("");
$secret_code = str_replace("'", '', $secret_code); // чистим от символов, способных вызвать сбой
$secret_code = str_replace(";", '', $secret_code);
$secret_code = str_replace("&", '', $secret_code);
// читим поля, если админ случайно введёт не те символы
$login = anti_xss_for_user($_POST['login']);
$pass = anti_xss_for_user($_POST['pass']);
$login = mysqli_real_escape_string($connect, $login);
$pass = mysqli_real_escape_string($connect, $pass);
// sql админа
$sql[8] = 'INSERT INTO gs_engine_users (login, password, email, rights, date_of_registration, secret_code, ip_of_registration) VALUES ("'.$login.'", "'.$pass.'", "'.$_POST['mail_admin'].'", "6", "'.time().'", "'.$secret_code.'", "'.$_SERVER['SERVER_ADDR'].'")';
for($i=0; $i<=8; $i++)
{
$result = mysqli_query($connect, $sql[$i]);
if (!$result) { $error .= 1; }
}
include 'gs_engine/includes/tpl_to_php.php'; // перевод tpl в php-код
tpl_to_php($dir_design);
include 'gs_engine/includes/update_cache.php'; // обновление кэша
update_cache('', 'all');
if (!$error)
{
$ok = 1;
// сообщение об удачной записи
$content .= '
<div class="warning">
<img src="gs_admin/ok.png"><br>
<b>Установка закончена!</b>
<br>Теперь вы можете зайти в <a href="admin.php">панель управления</a> и на сам сайт.
<br><br><font color="red"><b>Обязательно удалите файл "install.php", так как он угрожает безопасности Вашего сайта!</b></font>
</div>
';
}
else
{
$content = '<div class="warning">
<img src="gs_admin/error.png" width="48" height="48"><br>
Ошибка БД<br>
</div>';
}
}
else
{
$content = '<div class="warning">
<img src="gs_admin/error.png" width="48" height="48"><br>
'.$error.'<div>';
}
}
if (!$_POST['index']) { $index = "index.php"; } else { $index = $_POST['index']; }
if (!$_POST['login']) { $login = "admin"; } else { $login = $_POST['login']; }
if (!$_POST['pass']) { $pass = "admin"; } else { $pass = $_POST['pass']; }
$index_folder = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$index_folder = str_replace("install.php", '', $index_folder);
$url = $index_folder.$index;
if (!$ok)
{
$content .= '
<h1>Установка</h1>
Создайте на своём хостинге базу данных MySQL с хеширование паролей по новому методу (PHP 5.3 или выше) с кодировкой utf-8 и вставьте сюда данные.
<br>
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<!-- Скрытые настройки -->
<input type="hidden" name="sent" value="1">
<input type="hidden" name="url" value="'.$url.'">
<input type="hidden" name="index_folder" value="'.$index_folder.'">
<input type="hidden" name="index" size="50" value="'.$index.'">
<!-- Конец скрытых настроек -->
<table align="center">
<tr>
<td>БД: имя сервера (хост)</td><td> </td><td><input class="field-form" type="text" name="db_server" size="50" value="'.$_POST['db_server'].'"></td>
</tr>
<tr>
<td>БД: имя пользователя</td><td> </td><td><input class="field-form" type="text" name="db_user" size="50" value="'.$_POST['db_user'].'"></td>
</tr>
<tr>
<td>БД: пароль</td><td> </td><td><input class="field-form" type="text" name="db_pass" size="50" value="'.$_POST['db_pass'].'"></td>
</tr>
<tr>
<td>БД: имя базы</td><td> </td><td><input class="field-form" type="text" name="db_name" size="50" value="'.$_POST['db_name'].'"></td>
</tr>
<tr>
<td>Название сайта:</td><td> </td><td><input class="field-form" type="text" name="name" size="50" value="'.$_POST['name'].'"></td>
</tr>
<tr>
<td>Слоган:</td><td> </td><td><input class="field-form" type="text" name="slogan" size="50" value="'.$_POST['slogan'].'"></td>
</tr>
<tr>
<td>Логин админа:</td><td> </td><td><input class="field-form" type="text" name="login" size="50" value="'.$login.'"></td>
</tr>
<tr>
<td>Пароль админа:</td><td> </td><td><input class="field-form" type="text" name="pass" size="50" value="'.$pass.'"></td>
</tr>
<tr>
<td>E-mail админа:</td><td> </td><td><input class="field-form" type="text" name="mail_admin" size="50" value="'.$_POST['mail_admin'].'"></td>
</tr>
<tr>
<td>E-mail движка (можно указать такой же, как у админа):</td><td> </td><td><input class="field-form" type="text" name="mail_engine" size="50" value="'.$_POST['mail_engine'].'"></td>
</tr>
<tr><td> </td><td> </td><td> </td></tr>
<tr>
<td> </td><td> </td><td><input class="come-in" value="Далее" type="submit"></input></td>
</tr>
</table>
</form>
';
}
echo '
<html>
<head>
<title>Панель администратора</title>
<meta charset="utf-8">
<link rel="stylesheet" href="gs_admin/style_install.css">
</head>
<body>
<div id="wrap">
<header>
<div id="left-column">
</div>
<div id="right-column">
</div>
</header>
<nav>
<p style="padding: 10px;"><span>Добро пожаловать в меню установки самого быстрого в мире движка! Мы очень рады, что Вы выбрали именно его.<br><br>Ситемные требования: PHP 5.x и MySQL.</span></p>
</nav>
<main>
'.$content.'
</main>
<footer>
</footer>
</div>
</body>
</html>
';
?>
Есть так же файл anti_xss_for_user.php, в котором лежит вот такой скрипт:
<?php
function anti_xss_for_user($var) // функция отчистки от xss-атка любой переменной
{
$var = htmlspecialchars(strip_tags($var), ENT_QUOTES);
return $var;
}
?>
Так вот при запуске intall.php выдаёт ошибку:
Fatal error: Cannot redeclare anti_xss_for_user() (previously declared in /home/www/z71647/htdocs/generalscript.ru/test/install.php:3) in /home/www/z71647/htdocs/generalscript.ru/test/gs_engine/includes/anti_xss_for_user.php on line 7
Фишка в том, что файл anti_xss_for_user.php нигде никак не подключается! Почему php связывает ошибку в install.php с anti_xss_for_user.php ??? Я его ранее подключал, может он остался где-то в оперативке?