Просмотр файла mc-2.7.0/install/index.php

Размер файла: 15.69Kb
  1. <?php
  2. /**
  3. * MobileCMS
  4. *
  5. * Open source content management system for mobile sites
  6. *
  7. * @author MobileCMS Team <support@mobilecms.pro>
  8. * @copyright Copyright (c) 2011-2019, MobileCMS Team
  9. * @link https://mobilecms.pro Official site
  10. * @license MIT license
  11. */
  12. // Отключаем генерирование ошибок
  13. error_reporting(7);
  14. // Название системы
  15. define('SYSTEM_NAME', 'MobileCMS');
  16. // Адрес сайта
  17. define('SITE_URL', 'http://' . $_SERVER['HTTP_HOST'] . str_replace('install/index.php', '', $_SERVER['PHP_SELF']));
  18.  
  19. // Шаги установки
  20. $steps = array(
  21. 'greeting' => 'Приветствие',
  22. 'license' => 'Лицензионное соглашение',
  23. 'chmod' => 'Настройка прав доступа к файлам',
  24. 'site_data' => 'Заполнение данных сайта',
  25. 'end_of_install' => 'Завершение установки',
  26. );
  27.  
  28. $step = !empty($_GET['step']) ? $_GET['step'] : 'greeting';
  29.  
  30. if (!array_key_exists($step, $steps))
  31. die('Шаг не определён!');
  32. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  33. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  34.  
  35. <html xmlns="http://www.w3.org/1999/xhtml">
  36. <head>
  37. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  38. <link rel="stylesheet" type="text/css" href="../views/admin/css/ui/jquery-ui.css" media="screen" />
  39. <link rel="stylesheet" type="text/css" href="../views/admin/css/layout.css" media="screen" />
  40. <link rel="stylesheet" type="text/css" href="../views/admin/css/ui.tabs.css" media="screen" />
  41. <title>Установка <?php echo SYSTEM_NAME ?></title>
  42. </head>
  43.  
  44. <body>
  45. <div id="logoProgress"></div>
  46.  
  47. <div id="header">
  48. Установка <?php echo SYSTEM_NAME ?>
  49. </div>
  50.  
  51. <div id="main">
  52. <div id="title">
  53. <h2><?php echo $steps[$step] ?></h2>
  54. </div>
  55.  
  56. <div id="left">
  57. <div id="sidebar">
  58. <h3>Шаг</h3>
  59.  
  60. <p>
  61. <ul style="padding: 0 0 0 5px">
  62. <li><?php if ($step == 'greeting'): ?><b>1. Приветствие</b><?php else: ?>1. Приветствие<?php endif; ?></li>
  63. <li><?php if ($step == 'license'): ?><b>2. Лицензионное соглашение</b><?php else: ?>2. Лицензионное соглашение<?php endif; ?></li>
  64. <li><?php if ($step == 'chmod'): ?><b>3. Настройка прав доступа</b><?php else: ?>3. Настройка прав доступа<?php endif; ?></li>
  65. <li><?php if ($step == 'site_data'): ?><b>4. Заполнение данных сайта</b><?php else: ?>4. Заполнение данных сайта<?php endif; ?></li>
  66. <li><?php if ($step == 'end_of_install'): ?><b>5. Завершение установки</b><?php else: ?>5. Завершение установки<?php endif; ?></li>
  67. </ul>
  68. </p>
  69. </div>
  70. </div>
  71.  
  72. <div id="content">
  73.  
  74. <?php
  75. // Если установка уже произведена, выводим сообщение об ошибке
  76. if (file_exists('../data_files/config.php') && $step != 'end_of_install')
  77. exit('<div class="box"><p>Установка была произведена ранее. Рекомендуем удалить папку install.</p></div></div></div></body></html>');
  78.  
  79. switch ($step) {
  80. // Приветствие
  81. case 'greeting':
  82. ?>
  83. <div class="box">
  84. <p><?php echo file_get_contents('./greeting.txt') ?></p>
  85. </div>
  86.  
  87. <p><button onclick="location.href = '?step=license'">Далее</button></p>
  88. <?php
  89. break;
  90.  
  91. // Лицензионное соглашение
  92. case 'license':
  93. ?>
  94. <div class="box">
  95. <p><?php echo nl2br(file_get_contents('../LICENSE.txt')) ?></p>
  96. </div>
  97.  
  98. <p><button onclick="location.href = '?step=chmod'">Согласен</button>&nbsp;<button onclick="location.href = 'http://ant0ha.ru'">Не согласен</button></p>
  99. <?php
  100. break;
  101.  
  102. // Проверка прав доступа
  103. case 'chmod':
  104. $chmod_files = file('./chmod_files.txt');
  105. $flag = TRUE;
  106. ?>
  107. <table cellspacing="0" cellpadding="0" class="table">
  108. <thead align="left" valign="middle">
  109. <tr>
  110. <td>Файл / Папка</td>
  111. <td>Статус</td>
  112. </tr>
  113. </thead>
  114.  
  115. <tbody align="left" valign="middle">
  116. <?php foreach ($chmod_files as $file): ?>
  117. <tr>
  118. <td><b><?php echo str_replace('../', '', $file) ?></b></td>
  119. <td>
  120. <?php
  121. if (is_writable(trim($file))) {
  122. echo '<span style="color: green">Записываемый</span>';
  123. } else {
  124. echo '<span style="color: red">Необходимо выставить chmod 777</span>';
  125. $flag = FALSE;
  126. }
  127. ?>
  128. </td>
  129. </tr>
  130. <?php endforeach; ?>
  131. </tbody>
  132. </table>
  133. <?php
  134. if ($flag == TRUE) {
  135. echo "<div class=\"box\"><p>Все необходимые файлы и папки доступны для записи, можно продолжать установку</p></div>";
  136. echo "<p><button onclick=\"location.href='?step=site_data'\">Далее</button></p>";
  137. } else {
  138. echo "<div class=\"box\"><p>Для продолжения установки необходимо чтобы все файлы и папки из списка выше были записываемыми</p></div>";
  139. echo "<p><button onclick=\"location.href='?step=chmod&amp;" . rand(111, 999) . "'\">Обновить</button></p>";
  140. }
  141. break;
  142.  
  143. // Настройка базы данных и генерация файла конфигурации
  144. case 'site_data':
  145. if (isset($_POST['submit'])) {
  146. $error = FALSE;
  147.  
  148. if (empty($_POST['db_server']))
  149. $error .= 'Укажите MySQL сервер<br />';
  150.  
  151. if (empty($_POST['db_user']))
  152. $error .= 'Укажите имя пользователя базы MySQL<br />';
  153.  
  154. if (empty($_POST['db_base']))
  155. $error .= 'Укажите имя базы данных<br />';
  156.  
  157. if (empty($_POST['site_url']))
  158. $error .= 'Укажите адрес сайта<br />';
  159.  
  160. if (empty($_POST['admin_login']))
  161. $error .= 'Укажите логин администратора<br />';
  162.  
  163. if (empty($_POST['admin_email']))
  164. $error .= 'Укажите e-mail администратора<br />';
  165.  
  166. if (empty($_POST['admin_password']))
  167. $error .= 'Укажите пароль администратора<br />';
  168.  
  169. if ($_POST['admin_password'] != $_POST['admin_password2'])
  170. $error .= 'Пароли не совпадают<br />';
  171.  
  172. if (!$error) {
  173. # Коннектимся к базе данных
  174. $link = mysqli_connect($_POST['db_server'], $_POST['db_user'], $_POST['db_password'], $_POST['db_base'], 3306)
  175. or die("Не возможно подключиться к MySQL серверу, проверьте правильность введенных данных</div></div></body></html>");
  176. mysqli_query($link, "SET NAMES utf8");
  177.  
  178. # Заливаем дамп системы
  179. $dump = file_get_contents('./system_dump.sql');
  180. $dump = str_replace('{ADMIN_LOGIN}', $_POST['admin_login'], $dump);
  181. $dump = str_replace('{ADMIN_EMAIL}', $_POST['admin_email'], $dump);
  182. $dump = str_replace('{ADMIN_PASSWORD}', md5(md5($_POST['admin_password'])), $dump);
  183. $dump = str_replace('{CMS_VERSION}', '2.7.0 beta', $config_data);
  184.  
  185. $queryes = explode('//=====================================//', $dump);
  186. foreach ($queryes as $query) {
  187. @mysqli_query($link, trim($query));
  188. }
  189.  
  190. # Создаем файл конфигурации системы
  191. $config_data = file_get_contents('./config_data.txt');
  192. $config_data = str_replace('{DB_HOST}', $_POST['db_server'], $config_data);
  193. $config_data = str_replace('{DB_USER}', $_POST['db_user'], $config_data);
  194. $config_data = str_replace('{DB_PASS}', $_POST['db_password'], $config_data);
  195. $config_data = str_replace('{DB_BASE}', $_POST['db_base'], $config_data);
  196. $config_data = str_replace('{SITE_URL}', $_POST['site_url'], $config_data);
  197.  
  198. file_put_contents('../data_files/config.php', $config_data);
  199. ?>
  200. <div class="box">
  201. <p>
  202. Файл конфигурации системы успешно создан, дамп базы данных залит.
  203. </p>
  204. </div>
  205. <p><button onclick="location.href = '?step=end_of_install'">Завершить установку</button>
  206. <?php
  207. }
  208. }
  209. if (!isset($_POST['submit']) OR $error) {
  210. if ($error) {
  211. echo "<div class=\"error\">";
  212. echo $error;
  213. echo "</div>";
  214. }
  215. ?>
  216. <form action="?step=site_data" method="post">
  217. <div class="box">
  218. <p>
  219. <label>Сервер MySQL</label>
  220. <input name="db_server" type="text" value="localhost">
  221. </p>
  222. <p>
  223. <label>Пользователь базы MySQL</label>
  224. <input name="db_user" type="text" value="<?php echo @$_POST['db_user'] ?>">
  225. </p>
  226. <p>
  227. <label>Пароль пользователя MySQL</label>
  228. <input name="db_password" type="password" value="">
  229. </p>
  230. <p>
  231. <label>Имя базы данных MySQL</label>
  232. <input name="db_base" type="text" value="<?php echo @$_POST['db_base'] ?>">
  233. </p>
  234. <p>
  235. <label>Адрес сайта</label>
  236. <input name="site_url" type="text" value="<?php echo SITE_URL ?>">
  237. </p>
  238. <p>
  239. <label>Логин администратора</label>
  240. <input name="admin_login" type="text" value="<?php echo @$_POST['admin_login'] ?>">
  241. </p>
  242. <p>
  243. <label>E-mail администратора</label>
  244. <input name="admin_email" type="text" value="<?php echo @$_POST['admin_email'] ?>">
  245. </p>
  246. <p>
  247. <label>Пароль администратора</label>
  248. <input name="admin_password" type="password" value="<?php echo @$_POST['admin_password'] ?>">
  249. </p>
  250. <p>
  251. <label>Повторите пароль администратора</label>
  252. <input name="admin_password2" type="password" value="<?php echo @$_POST['admin_password2'] ?>">
  253. </p>
  254. </div>
  255. <p><input type="submit" name="submit" value="Далее"></p>
  256. </form>
  257. <?php
  258. }
  259. break;
  260.  
  261. # Завершение установки
  262. case 'end_of_install':
  263. ?>
  264. <div class="box">
  265. <p>
  266. Установка <?php echo SYSTEM_NAME ?> успешно завершена! Благодарим за выбор нашей CMS. Не забудьте удалить папку install.
  267. </p>
  268. </div>
  269. <p><button onclick="location.href = '<?php echo SITE_URL ?>'">Перейти на сайт</button></p>
  270. <?php
  271. break;
  272. }
  273. ?>
  274. </div>
  275. </div>
  276. </body>
  277. </html>