[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP ведёт себя странно
Master812
Всем привет!
Имеется скрипт 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 ??? Я его ранее подключал, может он остался где-то в оперативке?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.