· 10 years ago · Jan 21, 2016, 11:18 AM
1ВопроÑ. ЕÑть файл уÑтановки CMS. УÑтановлен локальный Ñервер - OpenServer. Ð’ уÑтановках Ñервера Ñтоит верÑÐ¸Ñ PHP-5.2 Ð’ÑÑ‘ работает иÑправно, движок уÑтанавливаетÑÑ, но, когда Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑŽ в наÑтройках Ñервера верÑию на PHP-5.5, то уÑтановка движка проходит, но переÑтают ÑоздаватьÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ в базе данных. Прошу обратить внимание, что, еÑли верÑÐ¸Ñ PHP-5.2, то Ñ Ð¼ÐµÐ½ÑÑŽ Ñтроку: $pass_admin = password_hash($pass_admin, PASSWORD_BCRYPT); на $pass_admin = md5($pass_admin); Ñ‚.к. Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ password_hash не доÑтупна в Ñтарых верÑиÑÑ… PHP. Помогите решить проблему...
2___________________________
3
4<?php
5/*
6Ðазначение: УÑтановка cms
7Файл: install.php
8*/
9session_start();
10
11header("Content-type: text/html; charset=utf-8");
12
13ini_set( 'display_errors', true );
14ini_set( 'html_errors', false );
15error_reporting('E_ALL');
16
17define( 'ROOT_DIR', dirname(__FILE__) );
18define( 'ENGINE_DIR', ROOT_DIR . '/engine' );
19define( 'LANG_DIR', ROOT_DIR . '/languages' );
20
21// проверÑем, имеютÑÑ Ð»Ð¸ Ñзыковые переменные. ЕÑли нет - Ñоздаем их.
22if ( !isset($_SESSION["lang"]) ){
23 if ( !isset($_COOKIE["lang"]) ){ // проверÑем Ñзык браузера, объÑвлÑем Ñзыковые переменные.
24 $langs = explode( '-',$_SERVER['HTTP_ACCEPT_LANGUAGE'] );
25 $lang = preg_replace('/;.*$/','',$langs[0]);
26 $lang = preg_replace('/[^a-zA-Z_\-]/','',$lang);
27
28 $cookie_set = setcookie ("lan", $lang, time()+900);
29 $_SESSION["lang"] = $lang;
30 }else{
31 $_SESSION["lang"] = $_COOKIE["lang"];
32 }
33}
34
35// подключаем Ñловарь Ð´Ð»Ñ PHP-Ñкриптов
36if ( $_SESSION["lang"] == 'ru' ){
37 require_once( LANG_DIR . '/ru/russian.lng' );
38 require_once( LANG_DIR . '/ru/errors.lng' );
39 $js_lang = 'ru';
40}else{
41 require_once( LANG_DIR . '/en/english.lng' );
42 require_once( LANG_DIR . '/en/errors.lng' );
43 $js_lang = 'en';
44}
45
46$msg_error = "";
47
48//проверка данных формы
49if( isset($_POST['submit_install']) ){
50
51 if( file_exists( ENGINE_DIR . '/functions.php' )){
52 require_once( ENGINE_DIR . '/functions.php' );
53
54 if( !empty($_POST['db_name']) ){
55 $db_name = clear_data($_POST['db_name']);
56 }else{
57 $msg_error .= $error['db_name'];
58 }
59
60 if( !empty($_POST['db_user']) ){
61 $db_user = clear_data($_POST['db_user']);
62 }else{
63 $msg_error .= $error['error_db_user'];
64 }
65
66 if( !empty($_POST['db_pass']) && !empty($_POST['db_pass_confirm']) && $_POST['db_pass'] === $_POST['db_pass_confirm'] ){
67 $db_pass = clear_data($_POST['db_pass']);
68 $db_pass_confirm = clear_data($_POST['db_pass_confirm']);
69 }else{
70 $msg_error .= $error['error_db_pass'];
71 }
72
73 if( !empty($_POST['db_host']) ){
74 $db_host = clear_data($_POST['db_host']);
75 }else{
76 $msg_error .= $error['error_db_host'];
77 }
78
79 if( preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $_POST['email_admin']) ){
80 $email_admin = $_POST['email_admin'];
81 }else{
82 $msg_error .= $error['error_email_admin'];
83 }
84
85 if( !empty($_POST['pass_admin']) && !empty($_POST['pass_confirm']) && $_POST['pass_admin'] === $_POST['pass_confirm'] ){
86 $pass_admin = clear_data($_POST['pass_admin']);
87 $pass_admin = password_hash($pass_admin, PASSWORD_BCRYPT);
88 $pass_confirm = clear_data($_POST['pass_confirm']);
89 }else{
90 $msg_error .= $error['error_pass_do_not_match'];
91 }
92 }else{
93 $msg_error .= $error['error_file_functions'];
94 }
95
96 /** еÑли ошибок не обнаружено **/
97 if( $msg_error == "" ){
98
99$dbconfig = <<<HTML
100<?php
101/** Данные Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных **/
102
103define ("DBHOST", "$db_host");
104define ("DBNAME", "$db_name");
105define ("DBUSER", "$db_user");
106define ("DBPASS", "$db_pass");
107\$db = new DB();
108?>
109HTML;
110
111$url = preg_replace( "'/install.php'", "", $_SERVER['HTTP_REFERER']);
112$url = preg_replace( "'\?(.*)'", "", $url);
113if(substr("$url", -1) == "/"){ $url = substr($url, 0, -1); }
114$url = str_replace( "$", "$", $url );
115
116/** файл конфигураций **/
117$configs = <<<HTML
118<?php
119//System Configurations / конфигурациÑ
120
121\$config = array(
122'home_title' => "TamBuild",
123'http_home_url' => "$url",
124'charset' => "utf-8",
125'language' => "$js_lang",
126'description' => "ДемонÑÑ‚Ñ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ñтраница TamBuild",
127'keywords' => "TamBuild, PHP движок",
128'skin' => "default"
129);
130?>
131HTML;
132
133 /** Ñоздаём файл Ð´Ð»Ñ Ð´Ð¾Ñтупа к БД **/
134 $file_dbconf = ENGINE_DIR . "/dbconfig.php";
135
136 if( file_put_contents($file_dbconf, $dbconfig) ){
137
138 @chmod( ENGINE_DIR . "/dbconfig.php", 0666 );
139
140 }else{
141
142 $msg_error .= $error['error_creat_file_dbcong'];
143
144 }
145
146 $file_conf = ENGINE_DIR . "/config.php";
147
148 if(file_put_contents($file_conf, $configs)){
149
150 @chmod( ENGINE_DIR."/config.php", 0666 );
151
152 }else{
153
154 $msg_error .= $error['error_creat_file_config'];
155
156 }
157
158 /** Ñоздание таблиц в БД **/
159 $sql = array();
160
161 $sql[] = "CREATE TABLE IF NOT EXISTS `admin` (
162 `id` int(11) NOT NULL AUTO_INCREMENT,
163 `email_admin` varchar(20) NOT NULL,
164 `pass_admin` varchar(32) NOT NULL,
165 PRIMARY KEY (`id`)
166 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";
167
168 $sql[] = "CREATE TABLE IF NOT EXISTS `users` (
169 `id` int(11) NOT NULL AUTO_INCREMENT,
170 `email` varchar(20) NOT NULL,
171 `pass` varchar(32) NOT NULL,
172 `date` datetime NOT NULL,
173 PRIMARY KEY (`id`)
174 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";
175
176 $sql[] = "CREATE TABLE IF NOT EXISTS `pages` (
177 `id` int(11) NOT NULL AUTO_INCREMENT,
178 `title` varchar(255) NOT NULL,
179 `meta_d` varchar(255) NOT NULL,
180 `meta_k` varchar(255) NOT NULL,
181 `header_text` varchar(255) NOT NULL,
182 `text` text NOT NULL,
183 `author` varchar(155) NOT NULL,
184 `date` datetime NOT NULL,
185 PRIMARY KEY (`id`)
186 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;";
187
188 $sql[] = "INSERT INTO `admin` VALUES (NULL, '$email_admin', '$pass_admin');";
189
190 $sql[] = "INSERT INTO `pages` (`id`, `title`, `meta_d`, `meta_k`, `header_text`, `text`, `author`, `date`) VALUES
191(1, 'ПриветÑтвие', 'приветÑтвие', 'приветÑтвие', 'СпаÑибо за иÑпользование продукта TamBuild', 'Мы надеемÑÑ, что данный продукт будет удобен и полезен Ð´Ð»Ñ Ð’Ð°Ñ!', 'ÐдминиÑтратор', '2013-07-30 00:00:00');";
192
193 require_once( ENGINE_DIR . "/classes/mysqli.class.php" );
194 require_once( ENGINE_DIR . "/dbconfig.php" );
195
196 $result = $db->connect(DBHOST, DBUSER, DBPASS, DBNAME);
197 if($result){
198 foreach( $sql as $table ){
199 mysqli_query($result, $table);
200 }
201 echo $message['install_complete'];
202 header("Location: " . $_SERVER["PHP_SELF"]);
203 exit();
204 }else{
205 $msg_error .= $error['error_db_connect'];
206 }
207 }
208}
209?>
210
211<html>
212<head>
213 <title><?php echo $message['title']; ?></title>
214</head>
215<body>
216<h1><?php echo $message['install_cms']; ?></h1>
217
218<!--форма выбора Ñзыка уÑтановки-->
219<form action="change_language.php" method="post">
220 <?php echo $message['choose_lang']; ?>
221 <select name="language" onChange="javascript:submit();">
222 <option value="en" <?php if ($_SESSION["lang"] != 'ru') { echo 'selected="selected"';}?>>English</option>
223 <option value="ru" <?php if ($_SESSION["lang"] == 'ru') { echo 'selected="selected"';}?>>РуÑÑкий</option>
224 </select>
225</form>
226
227<h2><?php echo $message['db_info']; ?> <a href=""><?php echo $message['instructions_for_install']; ?></a></h2>
228<!--форма уÑтановки движка-->
229<?php echo ($msg_error != '') ? '<h2>'.$message['check_input_data'].' '.$msg_error.'</h2>' : ''; ?>
230<form action="install.php" method="post">
231 <label><?php echo $message['db_name']; ?></label><br />
232 <input type="text" name="db_name" required /><br />
233 <label><?php echo $message['db_user']; ?></label><br />
234 <input type="text" name="db_user" value="admin" required /><br />
235 <label><?php echo $message['db_pass']; ?></label><br />
236 <input type="password" name="db_pass" required /><br />
237 <label><?php echo $message['db_pass_confirm']; ?></label><br />
238 <input type="password" name="db_pass_confirm" required /><br />
239 <label><?php echo $message['db_host']; ?></label><br />
240 <input type="text" name="db_host" value="localhost" required /><br />
241 <h2><?php echo $message['control_panel']; ?></h2>
242 <label><?php echo $message['email_admin']; ?></label><br />
243 <input type="text" name="email_admin" required /><br />
244 <label><?php echo $message['pass_admin']; ?></label><br />
245 <input type="password" name="pass_admin" required /><br />
246 <label><?php echo $message['pass_confirm']; ?></label><br />
247 <input type="password" name="pass_confirm" required /><br />
248 <input type="submit" name="submit_install" value="<?php echo $message['submit_install']; ?>" />
249</form>
250</body>
251</html>