Source for file init.php
Documentation is available at init.php
if (isset
($_SERVER['REQUEST_METHOD']) &&
strtolower($_SERVER['REQUEST_METHOD']) ===
'post')
if (isset
($_SERVER['HTTP_REFERER']))
$ref_url =
parse_url($_SERVER['HTTP_REFERER']);
$ref_url =
(trim($ref_url['host']) ==
$_SERVER['SERVER_NAME']);
if (!$ref_url) die('<div style="background-color:#fff;padding:5px;border:2px solid #f00"><b>Illegal Operation:</b> Posting allowed only from main server.</div>');
* Удаление глобальных массивов
if (!ini_get('register_globals')) return;
$allowed =
array('_ENV'=>
1, '_GET'=>
1, '_POST'=>
1, '_COOKIE'=>
1, '_FILES'=>
1, '_SERVER'=>
1, '_REQUEST'=>
1, 'GLOBALS'=>
1);
foreach ($GLOBALS as $key =>
$value)
if (!isset
($allowed[$key])) unset
($GLOBALS[$key]);
if (isset
($HTTP_POST_VARS))
$_POST =
$HTTP_POST_VARS;
$_COOKIE =
$HTTP_COOKIE_VARS;
* Слешевание (для глобальных массивов)
* рекурсивно обрабатывает вложенные массивы
* @param array $array обрабатываемый массив
* @return array обработанный массив
while (list
($key, $val) =
each($array))
if (isset
($_SERVER['HTTPS']))
if ('on' ==
strtolower($_SERVER['HTTPS'])) return true;
if ('1' ==
$_SERVER['HTTPS']) return true;
elseif (isset
($_SERVER['SERVER_PORT']) &&
('443' ==
$_SERVER['SERVER_PORT']))
if (isset
($_SERVER['HTTP_HOST']))
// Все символы $_SERVER['HTTP_HOST'] приводим к строчным и проверяем
// на наличие запрещённых символов в соответствии с RFC 952 и RFC 2181.
$_SERVER['HTTP_HOST'] =
strtolower($_SERVER['HTTP_HOST']);
if (!preg_match('/^\[?(?:[a-z0-9-:\]_]+\.?)+$/', $_SERVER['HTTP_HOST']))
// $_SERVER['HTTP_HOST'] не соответствует спецификациям.
// Возможно попытка взлома, даём отлуп статусом 400.
header('HTTP/1.1 400 Bad Request');
$_SERVER['HTTP_HOST'] =
'';
$shema =
($ssl) ?
'https://' :
'http://';
$host =
str_replace(':' .
$_SERVER['SERVER_PORT'], '', $_SERVER['HTTP_HOST']);
$port =
($_SERVER['SERVER_PORT'] ==
'80' ||
$_SERVER['SERVER_PORT'] ==
'443' ||
$ssl) ?
'' :
':' .
$_SERVER['SERVER_PORT'];
define('HOST', $shema .
$host .
$port);
$script_name =
(!strstr($_SERVER['PHP_SELF'], $_SERVER['SCRIPT_NAME']) &&
(@php_sapi_name() ==
'cgi')) ?
$_SERVER['PHP_SELF'] :
$_SERVER['SCRIPT_NAME'];
ini_set('arg_separator.output', '&');
ini_set('session.cache_limiter', 'none');
ini_set('session.cookie_lifetime', 60*
60*
24*
14);
ini_set('session.gc_maxlifetime', 60*
24);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
require
(BASE_DIR .
'/inc/config.php');
require
(BASE_DIR .
'/functions/func.common.php');
require
(BASE_DIR .
'/functions/func.login.php');
require
(BASE_DIR .
'/functions/func.pagination.php');
require
(BASE_DIR .
'/functions/func.parsefields.php');
require
(BASE_DIR .
'/functions/func.parserequest.php');
if ($cookie_domain ==
'' &&
defined('COOKIE_DOMAIN') &&
COOKIE_DOMAIN !=
'')
$cookie_domain =
COOKIE_DOMAIN;
elseif ($cookie_domain ==
'' &&
!empty($_SERVER['HTTP_HOST']))
// Удаляем ведущие www. и номер порта в имени домена для использования в cookie.
$cookie_domain =
ltrim($cookie_domain, '.');
if (strpos($cookie_domain, 'www.') ===
0)
$cookie_domain =
substr($cookie_domain, 4);
$cookie_domain =
explode(':', $cookie_domain);
$cookie_domain =
'.'.
$cookie_domain[0];
// В соответствии с RFC 2109, имя домена для cookie должно быть второго или более уровня.
// Для хостов 'localhost' или указанных IP-адресом имя домена для cookie не устанавливается.
ini_set('session.cookie_domain', $cookie_domain);
ini_set('session.cookie_path', ABS_PATH);
require
(BASE_DIR .
'/functions/func.session.php');
ini_set('session.save_handler', 'files');
//session_name('SESS'. md5($session_name));
if (isset
($HTTP_SESSION_VARS)) $_SESSION =
$HTTP_SESSION_VARS;
if (isset
($_REQUEST['action']) &&
$_REQUEST['action'] ==
'logout')
//require(BASE_DIR . '/inc/ids.php');
require
(BASE_DIR .
'/class/class.database.php');
if (!defined('ACPL') &&
!auth_sessions())
// чистим данные авторизации в сессии
unset
($_SESSION['user_id'], $_SESSION['user_pass']);
// считаем пользователя Гостем
$_SESSION['user_group'] =
2;
define('UNAME', $_SESSION['user_name']);
// Заглушка пока нет поддержки многоязычности
// Эксперимент с кэшированием
if (!defined('ACP') &&
empty($_POST) &&
!isset
($_REQUEST['module']) &&
UGROUP == -
2)
require
(BASE_DIR .
'/lib/Cache/Lite/Output.php');
$cache =
new Cache_Lite_Output($options);
if ($cache->start($_SERVER['REQUEST_URI']) &&
defined('PROFILING') &&
PROFILING)
define('DATE_FORMAT', get_settings('date_format'));
define('TIME_FORMAT', get_settings('time_format'));
define('PAGE_NOT_FOUND_ID', intval(get_settings('page_not_found_id')));
if (isset
($_REQUEST['onlycontent']) &&
1 ==
$_REQUEST['onlycontent'])
$acp_language =
empty($_SESSION['admin_language'])
?
$_SESSION['user_language']
:
$_SESSION['admin_language'];
@setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
@setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251', 'russian');
require
(BASE_DIR .
'/class/class.template.php');
Documentation generated on Fri, 04 Jun 2010 18:02:38 +0400 by phpDocumentor 1.4.3