Просмотр файла includes/start.php

Размер файла: 5.23Kb
  1. <?php
  2. #-----------------------------------------------------#
  3. # ********* ROTORCMS ********* #
  4. # Made by : VANTUZ #
  5. # E-mail : visavi.net@mail.ru #
  6. # Site : http://pizdec.ru #
  7. # WAP-Site : http://visavi.net #
  8. # ICQ : 36-44-66 #
  9. # Вы не имеете право вносить изменения в код скрипта #
  10. # для его дальнейшего распространения #
  11. #-----------------------------------------------------#
  12.  
  13. /* Режим отладки
  14. error_reporting(E_ALL);
  15. ini_set('display_errors', true);
  16. ini_set('html_errors', true);
  17. ini_set('error_reporting', E_ALL);
  18. */
  19.  
  20. @error_reporting(E_ALL ^ E_NOTICE);
  21. @ini_set('display_errors', false);
  22. @ini_set('html_errors', false);
  23. @ini_set('error_reporting', E_ALL ^ E_NOTICE);
  24. @ini_set('url_rewriter.tags', '');
  25. @ini_set('session.use_trans_sid', 1);
  26. session_name('SID');
  27. session_start();
  28.  
  29. $starttime = microtime(1);
  30. $ip = preg_replace('|[^0-9\.]|', '', $_SERVER['REMOTE_ADDR']);
  31. if (version_compare(PHP_VERSION, '5.2.1') < 0) {
  32. die('<b>Ошибка! Версия PHP должна быть 5.2.1 или выше!</b>');
  33. }
  34.  
  35. if (get_magic_quotes_gpc()) {
  36. $in = array(&$_GET, &$_POST, &$_COOKIE);
  37. while (list($k, $v) = each($in)) {
  38. foreach ($v as $key => $val) {
  39. if (!is_array($val)) {
  40. $in[$k][$key] = stripslashes($val);
  41. continue;
  42. }
  43. $in[] = &$in[$k][$key];
  44. }
  45. }
  46. unset ($in);
  47. if (!empty ($_FILES)) {
  48. foreach ($_FILES as $k => $v) {
  49. $_FILES[$k]['name'] = stripslashes((string) $v['name']);
  50. }
  51. }
  52. }
  53.  
  54. $level = 0;
  55. $folder_level = '';
  56. while (!file_exists($folder_level . 'input.php') && $level < 5) {
  57. $folder_level .= '../';
  58. ++$level;
  59. }
  60. unset($level);
  61.  
  62. define('BASEDIR', $folder_level);
  63. define('DATADIR', BASEDIR . 'local/');
  64. define('ADMINDIR', BASEDIR . 'mpanel/');
  65.  
  66. foreach ($_GET as $check_url) {
  67. if (is_string($check_url) && !preg_match('#^(?:[a-z0-9_\-/]+|\.+(?!/))*$#i', $check_url)) {
  68. $_SESSION['note'] = 'ERROR 403. Недопустимый запрос!';
  69. header ('Location: ' . BASEDIR . 'index.php?' . SID);
  70. exit;
  71. }
  72. }
  73. unset($check_url);
  74. // ---------------------------- Класс для работы с базами данных -------------------------------//
  75. class PDO_ extends PDO {
  76. function __construct($dsn, $username, $password) {
  77. parent :: __construct($dsn, $username, $password);
  78. $this -> setAttribute(PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
  79. $this -> setAttribute(PDO :: ATTR_DEFAULT_FETCH_MODE, PDO :: FETCH_ASSOC);
  80. }
  81.  
  82. function prepare($sql) {
  83. $stmt = parent :: prepare($sql, array(
  84. PDO :: ATTR_STATEMENT_CLASS => array('PDOStatement_')
  85. ));
  86. return $stmt;
  87. }
  88.  
  89. function query($sql, $params = array()) {
  90. $stmt = $this -> prepare($sql);
  91. $stmt -> execute($params);
  92. return $stmt;
  93. }
  94.  
  95. function querySingle($sql, $params = array()) {
  96. $stmt = $this -> query($sql, $params);
  97. $stmt -> execute($params);
  98. return $stmt -> fetchColumn(0);
  99. }
  100.  
  101. function queryFetch($sql, $params = array()) {
  102. $stmt = $this -> query($sql, $params);
  103. $stmt -> execute($params);
  104. return $stmt -> fetch();
  105. }
  106. }
  107. // ----------------------------------------------------//
  108. class PDOStatement_ extends PDOStatement {
  109. function execute($params = array()) {
  110. if (func_num_args() == 1) {
  111. $params = func_get_arg(0);
  112. } else {
  113. $params = func_get_args();
  114. }
  115. if (!is_array($params)) {
  116. $params = array($params);
  117. }
  118. parent :: execute($params);
  119. return $this;
  120. }
  121.  
  122. function fetchSingle() {
  123. return $this -> fetchColumn(0);
  124. }
  125.  
  126. function fetchAssoc() {
  127. $this -> setFetchMode(PDO :: FETCH_NUM);
  128. $data = array();
  129. while ($row = $this -> fetch()) {
  130. $data[$row[0]] = $row[1];
  131. }
  132. return $data;
  133. }
  134. }
  135.  
  136. include_once (BASEDIR . 'includes/connect.php');
  137.  
  138. class DB {
  139. static $dbh;
  140.  
  141. public function __construct() {
  142. try {
  143. self :: $dbh = new PDO_('mysql:host=' . DBHOST . ';port=' . DBPORT . ';dbname=' . DBNAME, DBUSER, DBPASS);
  144. self :: $dbh -> exec('SET CHARACTER SET utf8');
  145. self :: $dbh -> exec('SET NAMES utf8');
  146. }
  147. catch (PDOException $e) {
  148. if (file_exists(BASEDIR . 'install/index.php')) {
  149. header ('Location: ' . BASEDIR . 'install/index.php');
  150. exit;
  151. }
  152. die('Connection failed: ' . $e -> getMessage());
  153. }
  154. }
  155. }
  156.  
  157. $database = new DB();
  158.  
  159. if (file_exists(DATADIR . 'temp/setting.dat')) {
  160. $config = unserialize(file_get_contents(DATADIR . 'temp/setting.dat'));
  161. } else {
  162. $queryset = DB :: $dbh -> query("SELECT `setting_name`, `setting_value` FROM `setting`;");
  163. $config = $queryset -> fetchAssoc();
  164. }
  165.  
  166. define('SITETIME', time() + $config['timeclocks'] * 3600); # Установка временного сдвига сайта
  167.  
  168. ?>