View file sys/inc/core.php

File size: 7.59Kb
<?php
# Morgan

define('MT', microtime(true));
// Настройки PHP
ini_set('session.use_trans_sid', true);
ini_set('register_globals', false);
ini_set('magic_quotes_gpc', false);
ini_set('magic_quotes_runtime', false);
ini_set('magic_quotes_sybase', false);
date_default_timezone_set('Europe/Moscow');
setlocale(LC_ALL, 'ru_RU.utf8');

session_name('SESSION');
if(!preg_match('~^[a-z0-9]{32}$~', $_COOKIE[session_name()]))
	{
	$new_sess_id = md5(rand(1000, 999999).MT);
	setcookie(session_name(), $new_sess_id);
	$_COOKIE[session_name] = $new_sess_id;
	session_id($new_sess_id);

	unset($new_sess_id);
	}
session_start();


################################################################################
################################################################################
// Настройки
{

if(!file_exists('sys/cfg/allcfg.ini'))die('Не найден файл конфигурации');
if(filesize('sys/cfg/allcfg.ini') == 0)die('Скрипт не установлен');
$allcfg = parse_ini_file('sys/cfg/allcfg.ini', true);

}

// Если определяем не верно, пропишите явно. со слэшем на конце!
#define('ROOT_DIR', $_SERVER['DOCUMENT_ROOT'].'/');
define('ROOT_DIR', $allcfg['other']['root']);
/* insert code */
	define('SYSTEM_DIR', ROOT_DIR.'sys/');
		define('INCLUDES_DIR', SYSTEM_DIR.'inc/');
		define('CONFIG_DIR', SYSTEM_DIR.'cfg/');
		define('TEMPLATES_DIR', SYSTEM_DIR.'tpl/');
		define('TEMPLATES_COMPILED_DIR', SYSTEM_DIR.'tpl_compile/');


if($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
	{
	define('LOCALHOST', true);
	error_reporting(E_ALL);
	set_time_limit(30);
	}
else
	{
	define('LOCALHOST', false);
	error_reporting(0);
	@set_time_limit(10);
	}


################################################################################
################################################################################
# Функции
{
		function fatal_error($msg = 'Неизвестная ошибка')
	{
	endclean();
	header('Content-Type: text/html;charset=utf-8');
	echo '<html><head><title>Системная ошибка</title></head><body>';
	echo '<b>'.date('G:i:s d.m.Y').'</b> : '.$msg;
	echo '</body></html>';
	exit;
	}

		function d($var, $exit = true, $return = false)
	{
	if(!$return)
		{
		Dumphper::dump($var);

		if($exit)exit;
		}

	ob_start();
	Dumphper::dump($var);
	$result = ob_get_contents();
	ob_end_clean();

	return $result;
	}

		function endclean()
	{
			while(ob_get_level())
		{
		ob_end_clean();
		}
	header('Content-Encoding: none', true);
	}

		function ad()
	{
	echo '<b>GET('.count($_GET, COUNT_RECURSIVE).')</b><br />';
	d($_GET, false);
	echo '<b>POST('.count($_POST, COUNT_RECURSIVE).')</b><br />';
	d($_POST, false);
	echo '<b>COOKIE('.count($_COOKIE, COUNT_RECURSIVE).')</b><br />';
	d($_COOKIE, false);
	echo '<b>SESSION('.count($_SESSION, COUNT_RECURSIVE).')</b><br />';
	d($_SESSION, false);
	echo '<b>FILES('.count($_FILES, COUNT_RECURSIVE).')</b><br />';
	d($_FILES, false);
	exit;
	}

		function myErrorHandler($errno, $errstr, $errfile, $errline)
	{
	if(LOCALHOST)err('<b>'.$errstr.'</b><br />In file <i>'.$errfile.'</i> on line <i>'.$errline.'</i>');
	}

		function __autoload($class_name)
	{
	if(!file_exists(INCLUDES_DIR.$class_name.'.class.php'))fatal_error('Не найден класс '.$class_name);
	require_once INCLUDES_DIR.$class_name.'.class.php';
	}

// Подключаем остальные функции
require INCLUDES_DIR.'functions.php';

set_error_handler('myErrorHandler');

#mysql_connect('localhost', 'user', '12345');
#mysql_select_db('mini_forum');
#mysql_query('SET NAMES utf8');
#var_dump(mysql_fetch_array(mysql_query("SELECT * FROM `mf_topics` WHERE `id` = '20'")));
#exit;

}
################################################################################
################################################################################
// Соединение с СУБД
{

if(LOCALHOST)
	{
	$db = new SW($allcfg['db_localhost']['user'], $allcfg['db_localhost']['password'], $allcfg['db_localhost']['host'], $allcfg['db_localhost']['database'], $allcfg['db_localhost']['prefix'], true);
	define('PREF', $allcfg['db_localhost']['prefix']);
	}
else
	{
	$db = new SW($allcfg['db']['user'], $allcfg['db']['password'], $allcfg['db']['host'], $allcfg['db']['database'], $allcfg['db']['prefix']);
	define('PREF', $allcfg['db']['prefix']);
	}

}


################################################################################
################################################################################
// Переменные
{

// Из базы
$cfg = $cfg_modules = array();
		while($param = $db -> fetch('SELECT * FROM `config`'))
	{
	$cfg[$param['name']] = $param['value'];
	}
#d($cfg);
unset($param);



define('PATH', $cfg['path']);
define('DOMAIN', (!empty($cfg['domain']) ? $cfg['domain'] : $_SERVER['HTTP_HOST']));
if(DOMAIN != $_SERVER['HTTP_HOST'])locate('http://'.DOMAIN);


// Получаем данные о посетителе
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('|^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|', $_SERVER['HTTP_X_FORWARDED_FOR']))define('MY_IP', str($_SERVER['HTTP_X_FORWARDED_FOR']));
elseif(isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('|^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|', $_SERVER['HTTP_CLIENT_IP']))define('MY_IP', str($_SERVER['HTTP_CLIENT_IP']));
else define('MY_IP', preg_replace('|[^0-9.]|','', $_SERVER['REMOTE_ADDR']));

define('MY_INT_IP', ip2int(MY_IP));

if (isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']))define('MY_UA', 'Opera Mini :'.str($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']));
elseif(isset($_SERVER['HTTP_USER_AGENT']))define('MY_UA', str($_SERVER['HTTP_USER_AGENT']));
else define('MY_UA', 'Unknow');

define('MY_SHORT_UA', strtok(MY_UA,' '));

define('MY_URI', (!empty($_SERVER['REQUEST_URI']) ? str($_SERVER['REQUEST_URI']) : null));
define('MY_REFERER', (!empty($_SERVER['HTTP_REFERER']) ? str($_SERVER['HTTP_REFERER']) : null));

define('TIME', time());
define('TIME_TODAY', strtotime(date('j F Y')));

if(stripos(MY_UA,'windows') !== false || stripos(MY_UA,'linux') !== false || stripos(MY_UA,'bsd') !== false || stripos(MY_UA,'x11') !== false || stripos(MY_UA,'unix') !== false || stripos(MY_UA,'macos') !== false || stripos(MY_UA,'macintosh') !== false)define('MY_WEB', true);
else define('MY_WEB', false);

define('MY_ACCEPT', (!empty($_SERVER['HTTP_ACCEPT']) ? str($_SERVER['HTTP_ACCEPT']) : null));

if(!empty($_SERVER['HTTP_ACCEPT_ENCODING']))define('MY_ACCEPT_ENCODING', strtolower($_SERVER['HTTP_ACCEPT_ENCODING']));
elseif(!empty($_SERVER['HTTP_TE']))define('MY_ACCEPT_ENCODING', strtolower($_SERVER['HTTP_TE']));
else define('MY_ACCEPT_ENCODING', null);

define('SCRIPT_NAME',$_SERVER['SCRIPT_NAME']);

define('ID', !empty($_GET['id']) ? int($_GET['id']) : 0);
define('MODE', !empty($_GET['mode']) ? str($_GET['mode']) : null);
define('ACT', !empty($_GET['act']) ? str($_GET['act']) : null);
define('SACT', !empty($_GET['sact']) ? str($_GET['sact']) : null);
define('RAND', rand(100000,999999));
define('EOL', "\r\n");


}


################################################################################
################################################################################
// Пользовательские данные

// авторизация, шапка и все остальное
require_once INCLUDES_DIR.'usr.php';

// функции именно ля этого скрипта
require_once INCLUDES_DIR.'my_functions.php';

# Morgan
?>