Created
September 24, 2016 14:23
-
-
Save SergeyStorm/0f40afa25b48c095c66bbfe3f34b3dbd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/**/ | |
// включение подсчета времени генерирования страницы | |
$start_time = microtime(true); | |
//*/ | |
// Управляемая буферизация вывода страницы | |
// так же для возможности отдачи файла с другим не буферизированным содержимым | |
function on_buffer($buffer) { | |
// заменить все "сукаблядь" на " (пиип) " | |
return(str_replace("сукаблядь", " (пиип) ", $buffer)); | |
} | |
// старт буфера | |
ob_start('on_buffer'); | |
/// --------- определения констант site и intsi | |
// site - путь к сайту на сервере | |
define('site', __DIR__.'/'); | |
// intsi - директория движка относительно сайтов | |
define('intsi', 'intsi/'); | |
/// ------- Определение переменных $url, $dirs, $file | |
$a = $_SERVER['REQUEST_URI']; | |
// Получаем текущий полный URL | |
$url = parse_url(urldecode("http://".$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'])); | |
$url['path'] = ltrim($url['path'], '/'); // удаляем '/' в начале | |
// Парсим переменные GET в глобальный массив $_GET | |
isset($url['query']) && parse_str($url['query'], $_GET); | |
// Разбираем путь на «папки» ("/" в конце быть не может - удаляется в .htaccess) | |
$dirs = explode('/', $url['path']); | |
// $url['file'] - имя файла | |
$url['file'] = $dirs[count($dirs)-1]; | |
// Разделение файла на имя ($file[0]) и расширение ($file[1] вместе с точкой перед расширением) | |
$file[1] = strrchr($url['file'], '.'); | |
$file[0] = str_replace($file[1], '', $url['file']); | |
// Если в конце адреса файл (есть расширение у файла) | |
if ($file[1] != FALSE) { | |
// Признак существования - сраницы нету (запрещено прямое обращение к index.html) | |
define('ispage', FALSE); | |
// убираем из $url['path'] имя файла в конце | |
$url['path'] = rtrim($url['path'], $url['file']); | |
// убираем имя файла с массива имён папок | |
unset($dirs[count($dirs)-1]); | |
// Если в конце адреса путь (нет расширения, возможно это страница) | |
} else { | |
if (file_exists(site.$url['path'].'/i.htm')) { | |
// Признак существования страницы - сраница есть | |
define('ispage', TRUE); | |
// Добавляем '/' в конец $url['path'], ведь это папка (если не корень сайта) | |
if ($url['path'] != '') $url['path'] = $url['path'].'/'; | |
// $url['file'] - имя файла | |
$url['file'] = 'i.htm'; | |
// вводим имя и расширение страницы в $file | |
$file[0] = 'i'; | |
$file[1] = 'htm'; | |
// Если нету страницы в данной папке то пустое имя файла | |
} else { | |
// Признак существования страницы - сраницы нету | |
define('ispage', FALSE); | |
// Пустое имя файла | |
$url['file'] = ''; | |
// Пустые имя и расширение страницы в $file | |
$file[0] = ''; | |
$file[1] = ''; | |
} | |
} | |
/* | |
session_start(); | |
// проверка безопасности сессий | |
$check_user_session = $_SERVER['REMOTE_ADDR']; | |
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $check_user_session .= $_SERVER['HTTP_X_FORWARDED_FOR']; } | |
if (isset($_SERVER['HTTP_USER_AGENT'])) { $check_user_session .= $_SERVER['HTTP_USER_AGENT']; } | |
// проверяем, чтоб не было подмены сессии | |
if (isset($_SESSION['intsi'])) { | |
if ($_SESSION['intsi'] != md5($check_user_session)) { | |
session_destroy(); | |
ob_end_clean(); | |
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found"); | |
header('Status: 404 Not Found'); | |
die("error"); | |
} else $_SESSION['intsi'] = md5($check_user_session); | |
} else $_SESSION['intsi'] = md5($check_user_session); | |
*/ | |
//Запрет кеширования клиентом | |
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Просроченная дата | |
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // всегда модифицированно | |
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 | |
header("Cache-Control: post-check=0, pre-check=0", FALSE); | |
header("Pragma: no-cache"); // HTTP/1.0 | |
/* | |
// Проверка и подключение мемкеша | |
if (class_exists('Memcache')) { | |
$memcache = new Memcache(); | |
if ($memcache -> connect('localhost', 11211, 5)) { | |
$memcachetrue = TRUE; // признак использования мемкеша | |
echo "cache true"; | |
} | |
} | |
*/ | |
/// ------------ Загрузка общих настроек сайта | |
// Загрузка Mobile_Detect | |
include site.intsi.'kernel/mobile_detect.php'; | |
// Файл общих настроек | |
include site.intsi.'config.php'; | |
// Загрузка ядра | |
include site.intsi.'kernel/core.php'; | |
// ------------------------------------------------------------------------------- | |
// Если есть страница, то её отображение | |
if (ispage) { | |
// page - путь к папке страницы относительно сайта | |
define('page', $url['path']); | |
//$url['path'] = rtrim($_SERVER['REQUEST_URI'], '/'); // удаляем '/' в начале | |
// загрузка стандартных настроек и настроек страницы | |
include site.tpl.'i.php'; | |
if (file_exists(site.page.'i.php')) include site.page.'i.php'; | |
// загрузка страницы | |
include site.page.file; | |
// Выключить подсчёт времени генерации страницы | |
$intsi_statistic = FALSE; | |
// Ниже - если это файл стилей, то его отдача браузеру | |
// здесь надо подумать о разделении настроек стилей от настроек страницы | |
} else if ($file[1] == '.css') { | |
// page - путь к папке страницы относительно сайта | |
if (isset($_GET['page'])) define('page', $_GET['page']); else define('page', $url['path']); | |
// ///////////////////////// --- Переосмыслить надо файл настройуи для стилей !!! | |
// ///////////////////////// --- Переосмыслить надо файл настройуи для стилей !!! | |
// загрузка стандартных настроек и настроек страницы | |
include site.tpl.'i.php'; | |
if (file_exists(site.page.'i.php')) include site.page.'i.php'; | |
// Вставка в файл технического заголовка, что бы он стал файлом стилей | |
header('Content-type:text/css'); | |
// Отдача файла стилей | |
include site.$url['path'].file; | |
// Выключить подсчёт времени генерации страницы | |
$intsi_statistic = FALSE; | |
// Ниже - если это файл скриптов, то его отдача браузеру | |
// здесь надо подумать о разделении настроек скриптов от настроек страницы | |
} else if ($file[1] == '.js') { | |
// page - путь к папке страницы относительно сайта | |
if (isset($_GET['page'])) define('page', $_GET['page']); else define('page', $url['path']); | |
// ///////////////////////// --- Переосмыслить надо файл настройуи для скриптов !!! | |
// ///////////////////////// --- Переосмыслить надо файл настройуи для скриптов !!! | |
// загрузка стандартных настроек и настроек страницы | |
include site.tpl.'i.php'; | |
if (file_exists(site.page.'i.php')) include site.page.'i.php'; | |
// Вставка в файл технического заголовка, что бы он стал файлом скриптов | |
header('Content-type:text/javascriptl'); | |
// Отдача файла скриптов | |
include site.$url['path'].file; | |
// Выключить подсчёт времени генерации страницы | |
$intsi_statistic = FALSE; | |
// Если страница не существует - вывод ошибки 404 | |
} else { | |
// сброс буфера, он ненужен | |
ob_end_clean(); | |
// инициирование ошибки 404 | |
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found"); | |
header('Status: 404 Not Found'); | |
// выдача страницы 404 | |
include site.intsi.'404.php'; | |
} | |
// ------------------------------------------------------------------------------- | |
/**/ | |
if ($intsi_statistic) { | |
//печать времени генерирования страницы | |
$gen_time = microtime(true) - $start_time; | |
printf("Генерация страницы: %f секунд, ", $gen_time); | |
//вычисление потребления памяти | |
if(function_exists('memory_get_usage')) { | |
$mem_usage = memory_get_usage(true); | |
if ($mem_usage < 1024) echo $mem_usage." байт"; | |
elseif ($mem_usage < 1048576) $memory_usage = round($mem_usage/1024,2)." кб"; | |
else $memory_usage = round($mem_usage/1048576,2)." мб"; | |
//Выводится это дело командой: | |
echo $memory_usage; | |
} | |
//*/ | |
} | |
//*/ | |
ob_end_flush(); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment