Просмотр файла setup/index.php

Размер файла: 10.26Kb
  1. <?php
  2. /**********************************
  3. * @package: PerfCMS *
  4. * @year: 2012 *
  5. * @author: Artas *
  6. * @link: http://perfcms.ru *
  7. **********************************/
  8. session_name('PSID');
  9. session_start();
  10. // error_reporting(0);
  11. define('SYS', realpath(dirname(__FILE__)).'/system');
  12. ?>
  13. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  14. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  15. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="uk" lang="uk">
  16. <head>
  17. <title>Installing PerfCMS 1.5.1</title>
  18. <link href="/template/themes/wap/default/style.css" rel="stylesheet" type="text/css" />
  19. </head>
  20. <body>
  21. <div class="main">
  22. <div class="panel">Installing PerfCMS 1.5.1</div>
  23. <?
  24. if(file_exists('../system/ini/db.ini') && !file_exists('../system/ini/install.txt')) {
  25. echo '<div class="post">
  26. PerfCMS already installed!
  27. </div>
  28. <div class="block">
  29. <a href="/">Home Page</a>
  30. </div>';
  31. } else {
  32. if(!isset($_GET['lang'])) {
  33. echo '<div class="post">
  34. Choose Installing language:<br/>
  35. <a href="/setup/?lang=uk">Українська</a><br/>
  36. <a href="/setup/?lang=ru">Русский</a><br/>
  37. <a href="/setup/?lang=en">English</a><br/>
  38. </div>';
  39. }
  40. else
  41. {
  42. if(file_exists('lang/'. trim($_GET['lang']).'.ini')) {
  43. $lang = parse_ini_file('lang/'. trim($_GET['lang']).'.ini');
  44. $lng = trim($_GET['lang']);
  45. } else {
  46. $lang = parse_ini_file('lang/en.ini');
  47. $lng = 'en';
  48. }
  49. if(isset($_GET['lang']) && !isset($_GET['act'])) {
  50. echo '<div class="post">'. $lang['welcome'] .'<br/>
  51. [ <a href="/setup/?act=start&amp;lang='. $lng .'">'. $lang['agree'] .'</a> | <a href="/setup/">'. $lang['nagree'] .'</a> ]</div>';
  52. }
  53. elseif(isset($_GET['lang']) && $_GET['act'] == 'start')
  54. {
  55. $chmods = array('../files/', '../files/share/', '../files/avatars/', '../files/forum/', '../system/ini/', '../system/lang/', '../system/lang/uk/', '../system/lang/en/', '../system/lang/ru/', '../tmp/');
  56. echo '<div class="post">
  57. <table>
  58. <tr>
  59. <td><b>'. $lang['fdir'] .'</b></td>
  60. <td><b>'. $lang['chmods'] .'</b></td>
  61. </tr>
  62. <tr>';
  63. foreach ($chmods as $chmod) {
  64. echo '<tr>
  65. <td>'. str_replace('../', '', $chmod) .'</td>';
  66. if (is_writable(trim($chmod))) {
  67. echo '<td><span style="color: green"><b>OK (777)</b></span></td>';
  68. $err = false;
  69. } else {
  70. echo '<td><span style="color: red">'.$lang['must_chmods'].' 777</span></td>';
  71. $err = TRUE;
  72. }
  73. echo '</tr>';
  74. }
  75. echo '</tr>
  76. </table>
  77. '. ($err == TRUE?'<a href="?act=start&amp;lang='. $lng .'">'.$lang['refresh'].'</a>':'<a href="?act=db&amp;lang='. $lng .'">'.$lang['next'].'</a>') .'
  78. </div>
  79. <div class="block">
  80. <a href="?lang='. $lng .'">'.$lang['back'].'</a>
  81. </div>';
  82. }
  83. elseif(isset($_GET['lang']) && $_GET['act'] == 'db')
  84. {
  85. if (isset($_POST['go'])) {
  86. $host = htmlspecialchars(trim($_POST['host']));
  87. $user = htmlspecialchars(trim($_POST['user']));
  88. $pass = htmlspecialchars(trim($_POST['pass']));
  89. $base = htmlspecialchars(trim($_POST['base']));
  90. if (empty($host)) $err .= $lang['empty_host'].'<br />';
  91. if (empty($user)) $err .= $lang['empty_user'].'<br />';
  92. if (empty($base)) $err .= $lang['empty_base'].'<br />';
  93. if(!isset($err)) {
  94. try {
  95. $db = new PDO('mysql:dbname='.$_POST['base'].';host='. $_POST['host'], $_POST['user'], $_POST['pass']);
  96. } catch (PDOException $e) {
  97. echo 'Connection failed: ' . $e->getMessage();
  98. }
  99. }
  100. if (!isset($err)) {
  101. $db->query("SET NAMES utf8");
  102. $cini = "host = \"$host\";\n"
  103. ."user = \"$user\";\n"
  104. ."pass = \"$pass\";\n"
  105. ."base = \"$base\";\n";
  106. file_put_contents('../system/ini/db.ini', $cini);
  107. $dump = file_get_contents('./setup.sql');
  108. $queryes = explode('-- --------------------------------------------------------', $dump);
  109. foreach($queryes as $query) {
  110. $db->query(trim($query));
  111. }
  112. echo '<div class="title">'.$lang['c_create'].'</div>
  113. <div class="menu">
  114. '.$lang['after_t'].'<br />
  115. <a href="?act=admin&amp;lang='. $lng .'">'.$lang['next'].'</a>
  116. </div>
  117. <div class="block">
  118. <a href="?act=db&amp;lang='. $lng .'">'.$lang['back'].'</a>
  119. </div>
  120. <div class="footer">PerfCMS 1.5.1, 2012</div>
  121. </div>
  122. </body>
  123. </html>';
  124. exit();
  125. }
  126. }
  127. if (isset($err)) echo '<div class="error">'. $err .'</div>';
  128. echo '<form method="post" action="?act=db&amp;lang='. $lng .'">
  129. <div class="title">'.$lang['connection'].'</div>
  130. <div class="menu">
  131. '.$lang['host'].':<br />
  132. <input type="text" name="host" value="localhost" /><br />
  133. '.$lang['user'].':<br />
  134. <input type="text" name="user" /><br />
  135. '.$lang['pass'].':<br />
  136. <input type="password" name="pass" /><br />
  137. '.$lang['base'].':<br />
  138. <input type="text" name="base" /><br />
  139. <input type="submit" name="go" value="'.$lang['send'].'" />
  140. </div>
  141. </form>
  142. <div class="block">
  143. <a href="?act=start&amp;lang='. $lng .'">'.$lang['back'].'</a>
  144. </div>';
  145. }
  146. elseif(isset($_GET['lang']) && $_GET['act'] == 'admin')
  147. {
  148. if (isset($_POST['reg_admin'])) {
  149. $nick = htmlspecialchars(trim($_POST['nick']));
  150. $name = htmlspecialchars(trim($_POST['name']));
  151. $email = htmlspecialchars(trim($_POST['email']));
  152. $password = htmlspecialchars(trim($_POST['password']));
  153. $password2 = htmlspecialchars(trim($_POST['password2']));
  154. if (empty($nick)) $err .= $lang['no_nick'].'<br />';
  155. if (empty($name)) $err .= $lang['no_name'].'<br />';
  156. if (empty($email)) $err .= $lang['no_email'].'<br />';
  157. if (empty($password)) $err .= $lang['no_pass'].'<br />';
  158. if (empty($password2)) $err .= $lang['no_pass2'].'<br />';
  159. if (!empty($nick) && (mb_strlen($nick, 'UTF-8') < 3 || mb_strlen($nick, 'UTF-8') > 32)) $err .= $lang['e_nick'].'<br />';
  160. if (!empty($nick) && !preg_match("#^([A-zА-я0-9\-\_\ ])+$#ui", $nick)) $err .= $lang['b_nick'].'<br />';
  161. if (!empty($name) && (mb_strlen($name, 'UTF-8') > 32)) $err .= $lang['e_name'].'<br />';
  162. if (!empty($email) && (mb_strlen($email, 'UTF-8') < 3 || mb_strlen($email, 'UTF-8') > 72)) $err .= $lang['b_mail'].'<br />';
  163. if (!empty($email) && !preg_match('|^([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})$|ius', $email)) $err .= $lang['e_email'].'<br />';
  164. if (!empty($password) && (mb_strlen($password, 'UTF-8') < 5 || mb_strlen($password, 'UTF-8') > 64)) $err .= $lang['e_pass'].'<br />';
  165. if (!empty($password) && !empty($password2) && $password != $password2) $err .= $lang['e_pass2'].'<br />';
  166. if (!isset($err)) {
  167.  
  168. function crypto($var) {
  169. return md5(base64_encode($var) .'_PerfCMS_');
  170. }
  171. # Кодуємо пароль
  172. $password = crypto($password);
  173. $mysql = parse_ini_file('../system/ini/db.ini');
  174. try {
  175. $db = new PDO('mysql:dbname='.$mysql['base'].';host='. $mysql['host'], $mysql['user'], $mysql['pass']);
  176. } catch (PDOException $e) {
  177. echo 'Connection failed: ' . $e->getMessage();
  178. }
  179. $db->query("SET NAMES utf8");
  180. function escape($inp)
  181. {
  182. if(is_array($inp))
  183. return array_map(__METHOD__, $inp);
  184.  
  185. if(!empty($inp) && is_string($inp)) {
  186. return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\', '\0', '\n', '\r', "\'", '\"', '\Z'), $inp);
  187. }
  188.  
  189. return $inp;
  190. }
  191. # Запит на реєстрацію
  192. $db->query("INSERT INTO `users` SET `name` = '". escape(trim($name)) ."', `nick` = '". escape(trim($nick)) ."', `password` = '". escape(trim($password)) ."', `reg_time` = '". time() ."', `time` = '". time() ."', `email` = '". escape(trim($email)) ."', `level` = '7', `gender`='0'");
  193. $language = $lng;
  194. $db->query("INSERT INTO `settings` SET `user_id` = '". $db->lastInsertId() ."', `lang` = '". $language ."', `ames` = '10', `theme` = 'default', `web_theme` = 'default', `fast_mess` = 'no', `view_profile` = 'all', `show_email` = 'no', `timezone` = 'Europe/Kiev'");
  195. $db->query("UPDATE `system` SET `lang` = '$language'");
  196. // print_r($db->errorInfo());
  197. unlink('../system/ini/install.txt');
  198. session_destroy();
  199. echo '<div class="title">'.$lang['end_i'].'</div>
  200. <div class="menu">
  201. '.$lang['end_i_t'].' <b>/setup/</b>.<br />
  202. <a href="/sign_in/?nick='. $nick .'&amp;password='. $password2 .'">'.$lang['go_site'].'</a>
  203. </div>
  204. <div class="block">
  205. <a href="?act=admin&amp;lang='. $lng .'">'.$lang['back'].'</a>
  206. </div>
  207. </div>
  208. <div class="footer">PerfCMS 1.5.1, 2012</div>
  209. </div>
  210. </body>
  211. </html>';
  212. exit();
  213. }
  214. }
  215. if (isset($err)) echo '<div class="err">'. $err .'</div>';
  216. echo '<form method="post" action="?act=admin&amp;lang='. $lng .'">
  217. <div class="title">Administration Registration</div>
  218. <div class="menu">
  219. '.$lang['nick'].':<br />
  220. <input type="text" name="nick" value="'. htmlspecialchars($_POST['nick']) .'" /><br />
  221. '.$lang['name'].':<br />
  222. <input type="text" name="name" value="'. htmlspecialchars($_POST['name']) .'" /><br />
  223. E-Mail:<br />
  224. <input type="text" name="email" value="'. htmlspecialchars($_POST['email']) .'" /><br />
  225. '.$lang['password'].':<br />
  226. <input type="password" name="password" /><br />
  227. '.$lang['password2'].':<br />
  228. <input type="password" name="password2" /><br />
  229. <input type="submit" name="reg_admin" value="'.$lang['sign_up'].'" />
  230. </div>
  231. </form>
  232. <div class="block">
  233. <a href="?act=db&amp;lang='. $lng .'">'.$lang['back'].'</a>
  234. </div>';
  235.  
  236. }
  237. }
  238. }
  239. ?>
  240. <div class="footer">PerfCMS 1.5.1, 2012</div>
  241. </div>
  242. </body>
  243. </html>