Advertisement
Guest User

Untitled

a guest
Jan 21st, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.37 KB | None | 0 0
  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. */
  9. session_start();
  10.  
  11. header("Content-type: text/html; charset=utf-8");
  12.  
  13. ini_set( 'display_errors', true );
  14. ini_set( 'html_errors', false );
  15. error_reporting('E_ALL');
  16.  
  17. define( 'ROOT_DIR', dirname(__FILE__) );
  18. define( 'ENGINE_DIR', ROOT_DIR . '/engine' );
  19. define( 'LANG_DIR', ROOT_DIR . '/languages' );
  20.  
  21. // проверяем, имеются ли языковые переменные. Если нет - создаем их.
  22. if ( !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-скриптов
  36. if ( $_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. //проверка данных формы
  49. if( 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.  
  103. define ("DBHOST", "$db_host");
  104. define ("DBNAME", "$db_name");
  105. define ("DBUSER", "$db_user");
  106. define ("DBPASS", "$db_pass");
  107. \$db = new DB();
  108. ?>
  109. HTML;
  110.  
  111. $url = preg_replace( "'/install.php'", "", $_SERVER['HTTP_REFERER']);
  112. $url = preg_replace( "'\?(.*)'", "", $url);
  113. if(substr("$url", -1) == "/"){ $url = substr($url, 0, -1); }
  114. $url = str_replace( "$", "&#036;", $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. ?>
  131. HTML;
  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>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement