Source for file init.php

Documentation is available at init.php

  1. <?php
  2.  
  3. /**
  4.  * AVE.cms
  5.  *
  6.  * @package AVE.cms
  7.  * @filesource
  8.  */
  9.  
  10. if (!defined('BASE_DIR')) exit;
  11.  
  12. if (isset($_SERVER['REQUEST_METHOD']&& strtolower($_SERVER['REQUEST_METHOD']=== 'post')
  13. {
  14.     $ref_url false;
  15.     if (isset($_SERVER['HTTP_REFERER']))
  16.     {
  17.         $ref_url parse_url($_SERVER['HTTP_REFERER']);
  18.         $ref_url (trim($ref_url['host']== $_SERVER['SERVER_NAME']);
  19.     }
  20.     if (!$ref_urldie('<div style="background-color:#fff;padding:5px;border:2px solid #f00"><b>Illegal Operation:</b> Posting allowed only from main server.</div>');
  21. }
  22.  
  23. /**
  24.  * Удаление глобальных массивов
  25.  *
  26.  */
  27. function unsetGlobals()
  28. {
  29.     if (!ini_get('register_globals')) return;
  30.  
  31.     $allowed array('_ENV'=>1'_GET'=>1'_POST'=>1'_COOKIE'=>1'_FILES'=>1'_SERVER'=>1'_REQUEST'=>1'GLOBALS'=>1);
  32.  
  33.     foreach ($GLOBALS as $key => $value)
  34.     {
  35.         if (!isset($allowed[$key])) unset($GLOBALS[$key]);
  36.     }
  37. }
  38.  
  39. if (isset($HTTP_POST_VARS))
  40. {
  41.     $_GET     $HTTP_GET_VARS;
  42.     $_POST    $HTTP_POST_VARS;
  43.     $_REQUEST array_merge($_POST$_GET);
  44.     $_COOKIE  $HTTP_COOKIE_VARS;
  45. }
  46.  
  47. /**
  48.  * Слешевание (для глобальных массивов)
  49.  * рекурсивно обрабатывает вложенные массивы
  50.  *
  51.  * @param array $array обрабатываемый массив
  52.  * @return array обработанный массив
  53.  */
  54. function add_slashes($array)
  55. {
  56.     reset($array);
  57.     while (list($key$valeach($array))
  58.     {
  59.         if (is_string($val))    $array[$keyaddslashes($val);
  60.         elseif (is_array($val))    $array[$keyadd_slashes($val);
  61.     }
  62.  
  63.     return $array;
  64. }
  65.  
  66. {
  67.     $_GET     add_slashes($_GET);
  68.     $_POST    add_slashes($_POST);
  69.     $_REQUEST array_merge($_POST$_GET);
  70.     $_COOKIE  add_slashes($_COOKIE);
  71. }
  72.  
  73. function is_ssl()
  74. {
  75.     if (isset($_SERVER['HTTPS']))
  76.     {
  77.         if ('on' == strtolower($_SERVER['HTTPS'])) return true;
  78.         if ('1' == $_SERVER['HTTPS']return true;
  79.     }
  80.     elseif (isset($_SERVER['SERVER_PORT']&& ('443' == $_SERVER['SERVER_PORT']))
  81.     {
  82.         return true;
  83.     }
  84.  
  85.     return false;
  86. }
  87.  
  88. function set_host()
  89. {
  90.     if (isset($_SERVER['HTTP_HOST']))
  91.     {
  92.         // Все символы $_SERVER['HTTP_HOST'] приводим к строчным и проверяем
  93.         // на наличие запрещённых символов в соответствии с RFC 952 и RFC 2181.
  94.         $_SERVER['HTTP_HOST'strtolower($_SERVER['HTTP_HOST']);
  95.         if (!preg_match('/^\[?(?:[a-z0-9-:\]_]+\.?)+$/'$_SERVER['HTTP_HOST']))
  96.         {
  97.             // $_SERVER['HTTP_HOST'] не соответствует спецификациям.
  98.             // Возможно попытка взлома, даём отлуп статусом 400.
  99.             header('HTTP/1.1 400 Bad Request');
  100.             exit;
  101.         }
  102.     }
  103.     else
  104.     {
  105.         $_SERVER['HTTP_HOST''';
  106.     }
  107.  
  108.     $ssl is_ssl();
  109.     $shema ($ssl'https://' 'http://';
  110.     $host str_replace(':' $_SERVER['SERVER_PORT']''$_SERVER['HTTP_HOST']);
  111.     $port ($_SERVER['SERVER_PORT'== '80' || $_SERVER['SERVER_PORT'== '443' || $ssl'' ':' $_SERVER['SERVER_PORT'];
  112.     define('HOST'$shema $host $port);
  113.  
  114.     $script_name (!strstr($_SERVER['PHP_SELF']$_SERVER['SCRIPT_NAME']&& (@php_sapi_name(== 'cgi')) $_SERVER['PHP_SELF'$_SERVER['SCRIPT_NAME'];
  115.     define('ABS_PATH'rtrim(str_replace("\\""/"dirname($script_name))'/''/');
  116. }
  117.  
  118. set_include_path(get_include_path(PATH_SEPARATOR BASE_DIR '/lib');
  119.  
  120. ini_set('arg_separator.output',     '&amp;');
  121. ini_set('session.cache_limiter',    'none');
  122. ini_set('session.cookie_lifetime',  60*60*24*14);
  123. ini_set('session.gc_maxlifetime',   60*24);
  124. ini_set('session.use_cookies',      1);
  125. ini_set('session.use_only_cookies'1);
  126. ini_set('session.use_trans_sid',    0);
  127. ini_set('url_rewriter.tags',        '');
  128.  
  129. require(BASE_DIR '/inc/config.php');
  130. require(BASE_DIR '/functions/func.common.php');
  131. require(BASE_DIR '/functions/func.login.php');
  132. require(BASE_DIR '/functions/func.pagination.php');
  133. if (!defined('ACP'))
  134. {
  135.     require(BASE_DIR '/functions/func.parsefields.php');
  136.     require(BASE_DIR '/functions/func.parserequest.php');
  137. }
  138.  
  139. function set_cookie_domain($cookie_domain '')
  140. {
  141.     if ($cookie_domain == '' && defined('COOKIE_DOMAIN'&& COOKIE_DOMAIN != '')
  142.     {
  143.         $cookie_domain COOKIE_DOMAIN;
  144.     }
  145.     elseif ($cookie_domain == '' && !empty($_SERVER['HTTP_HOST']))
  146.     {
  147.         $cookie_domain htmlspecialchars($_SERVER['HTTP_HOST']ENT_QUOTES);
  148.     }
  149.  
  150.     // Удаляем ведущие www. и номер порта в имени домена для использования в cookie.
  151.     $cookie_domain ltrim($cookie_domain'.');
  152.     if (strpos($cookie_domain'www.'=== 0)
  153.     {
  154.         $cookie_domain substr($cookie_domain4);
  155.     }
  156.     $cookie_domain explode(':'$cookie_domain);
  157.     $cookie_domain '.'$cookie_domain[0];
  158.  
  159.     // В соответствии с RFC 2109, имя домена для cookie должно быть второго или более уровня.
  160.     // Для хостов 'localhost' или указанных IP-адресом имя домена для cookie не устанавливается.
  161.     if (count(explode('.'$cookie_domain)) && !is_numeric(str_replace('.'''$cookie_domain)))
  162.     {
  163.         ini_set('session.cookie_domain'$cookie_domain);
  164.     }
  165.  
  166.     ini_set('session.cookie_path'ABS_PATH);
  167. }
  168.  
  169. {
  170.     require(BASE_DIR '/functions/func.session.php');
  171. }
  172. else
  173. {
  174.     ini_set('session.save_handler''files');
  175. }
  176.  
  177. //session_name('SESS'. md5($session_name));
  178.  
  179. if (isset($HTTP_SESSION_VARS)) $_SESSION $HTTP_SESSION_VARS;
  180.  
  181. if (isset($_REQUEST['action']&& $_REQUEST['action'== 'logout')
  182. {
  183.     user_logout();
  184.  
  185.     header('Location:' get_referer_link());
  186.     exit;
  187. }
  188.  
  189. // для параноиков
  190. //require(BASE_DIR . '/inc/ids.php');
  191.  
  192. require(BASE_DIR '/class/class.database.php');
  193.  
  194. if (!defined('ACPL'&& !auth_sessions())
  195. {
  196.     if (!auth_cookie())
  197.     {
  198.         // чистим данные авторизации в сессии
  199.         unset($_SESSION['user_id']$_SESSION['user_pass']);
  200.  
  201.         // считаем пользователя Гостем
  202.         $_SESSION['user_group'2;
  203.         $_SESSION['user_name'get_username();
  204.         define('UID'0);
  205.         define('UGROUP'2);
  206.         define('UNAME'$_SESSION['user_name']);
  207.     }
  208. }
  209.  
  210. // Заглушка пока нет поддержки многоязычности
  211. $_SESSION['user_language'DEFAULT_LANGUAGE;
  212.  
  213. // Эксперимент с кэшированием
  214. if (!defined('ACP'&& empty($_POST&& !isset($_REQUEST['module']&& UGROUP == -2)
  215. {
  216.     require(BASE_DIR '/lib/Cache/Lite/Output.php');
  217.  
  218.     $options array(
  219.         'writeControl' => false,
  220.         'readControl'  => false,
  221.         'lifeTime'     => CACHE_LIFETIME,
  222.         'cacheDir'     => BASE_DIR '/cache/'
  223.     );
  224.  
  225.     $cache new Cache_Lite_Output($options);
  226.  
  227.     if ($cache->start($_SERVER['REQUEST_URI']&& defined('PROFILING'&& PROFILING)
  228.     {
  229.         echo get_statistic(1,1,1,0);exit;
  230.     }
  231. }
  232.  
  233. define('DATE_FORMAT'get_settings('date_format'));
  234. define('TIME_FORMAT'get_settings('time_format'));
  235. define('PAGE_NOT_FOUND_ID'intval(get_settings('page_not_found_id')));
  236. if (isset($_REQUEST['onlycontent']&& == $_REQUEST['onlycontent'])
  237. {
  238.     define('ONLYCONTENT'1);
  239. }
  240.  
  241. function set_locale()
  242. {
  243.     $acp_language empty($_SESSION['admin_language'])
  244.                         ? $_SESSION['user_language']
  245.                         : $_SESSION['admin_language'];
  246.  
  247.     $locale strtolower(defined('ACP'$acp_language $_SESSION['user_language']);
  248.  
  249.     switch ($locale)
  250.     {
  251.         case 'de':
  252.             @setlocale (LC_ALL'de_DE@euro''de_DE''de''ge');
  253.             break;
  254.  
  255.         case 'ru':
  256.             @setlocale(LC_ALL'ru_RU.CP1251''rus_RUS.CP1251''Russian_Russia.1251''russian');
  257.             break;
  258.  
  259.         default:
  260.             @setlocale (LC_ALL$locale '_' strtoupper($locale)$locale'');
  261.             break;
  262.     }
  263. }
  264.  
  265. require(BASE_DIR '/class/class.template.php');
  266.  
  267. ?>

Documentation generated on Fri, 04 Jun 2010 18:02:38 +0400 by phpDocumentor 1.4.3