Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Движок для статического HTML





<?php

$indexfile="/index.html";// название индексного файла

$sitemail='manager@'.$_SERVER["SERVER_NAME"]; // маил сайта

require($_SERVER["DOCUMENT_ROOT"].'/include/check.php');

$path=pathinfo($_SERVER["REQUEST_URI"]);// разбить запрошеный УРЛ для анализа (потребуется в меню)

$fname=$_SERVER["DOCUMENT_ROOT"].$_SERVER["REQUEST_URI"];// Путь и имя с расширением и параметрами

$fname=parse_url($fname);

$fname=$fname['path'];

@$template=file_get_contents($_SERVER['DOCUMENT_ROOT']."/include/index.html");

 

if($fname==''){ // Запуск шаблона напрямую

$tempstring=file_get_contents($indexfile);

$temparray=explode('<!--End Meta-->',$tempstring,2);

while(count($temparray)<2){

array_unshift($temparray,'');

}

$metadata=$temparray[0];

$content=$temparray[1];

}else if (is_dir($fname) && eregi('include',$fname)===false && is_file($fname.$indexfile)){ // это каталог и в нем есть индексный файл и это не служебный каталог include

$tempstring=file_get_contents ($fname.$indexfile);

$temparray=explode('<!--End Meta-->',$tempstring,2);

while(count($temparray)<2){

array_unshift($temparray,'');

}

$metadata=$temparray[0];

$content=$temparray[1];

}else if (is_dir($fname)){ // это каталог (без индексного)

$tempstring=file_get_contents ('errors/error_403.html');

$temparray=explode('<!--End Meta-->',$tempstring,2);

while(count($temparray)<2){

array_unshift($temparray,'');

}

$metadata=$temparray[0];

$content=$temparray[1];

}else if (is_file($fname) &&!stristr($fname,'/.') && eregi('include',$fname)===false){ // Файл есть и его имя не начинается с точки

// (системные файлы.htaccess,.htpassword и т. д.) и это не служебный файл из папки include

$tempstring=file_get_contents($fname);

$temparray=explode('<!--End Meta-->',$tempstring,2);

while(count($temparray)<2){

array_unshift($temparray,'');

}

$metadata=$temparray[0];

$content=$temparray[1];

}else{

$tempstring=file_get_contents ('errors/error_404.html');

$temparray=explode('<!--End Meta-->',$tempstring,2);

while(count($temparray)<2){

array_unshift($temparray,'');

}

$metadata=$temparray[0];

$content=$temparray[1];

}

 

@$menu=file_get_contents($_SERVER['DOCUMENT_ROOT']."/include/menu.php");

 

$template=str_replace("<!--METADATA-->",$metadata,$template);

$template=str_replace("<!--MENU-->",$menu,$template);

$template=str_replace("<!--CONTENT-->",$content,$template);

eval('?>'.$template.'<?');

//echo $template;

 

?>

Два момента в этом движке требуют пояснений:

require($_SERVER["DOCUMENT_ROOT"].'/include/check.php');

требует скрипт, в котором проверяется запрос на наличие хакерских атак. Если файла /include/check.php нет, эту строку необходимо удалить, так как иначе, при его отсутствии, движок работать не будет.

Строка

eval('?>'.$template.'<?');

и идущая следом за ней закомментированная строка

//echo $template;

предлагают 2 варианта поведения скрипта. В первом он обрабатывает шаблон и страницы сайта как php-скрипты, позволяя вставлять в них произвольный php-код. Во втором случае содержимое отдается браузеру без обработки php-кода, снижая нагрузку на сервер, но лишая владельца сайта возможности произвольно использовать php.

Этот фрагмент написан спустя полтора года после написания основной статьи. Хочу пояснить в нем некоторые вещи, которые не всем были очевидны из основного текста.

Практически для любой СУКи, построенной на базе данных, при большой посещаемости возникает проблема кеширования данных на диск (и некоторые ранее популярные СУКи на базах вымерли, как динозавры, из-за своей медлительности, например, phpNuke). Эта проблема возникает из-за того, что данные из файлов на диске считываются гораздо быстрее и с меньшей нагрузкой, чем данные из базы. Именно для снижения нагрузки на сервер и увеличения скорости, СУКа начинает использовать простые текстовые файлы с диска. Фактически, это означает, что она, хоть и построена на базе данных, начинает работать как СУКа на текстовых файлах. Возникает парадокс: а зачем собственно, писать данные в базу, чтоб потом вытаскивать их на диск и работать с текстовыми файлами с диска? Не проще ли сразу писать их на диск?

СУКи на текстовых файлах лишены этого парадокса, а потому компактны, быстры и экономны к ресурсам. Если структура данных проста, то использовать для их хранения базу так же неразумно, как заводить комбаин для скашивания единственного колоска.

В последнее время преимущества файловых СУК становятся очевидны многим программистам и, количество таких СУК неуклонно растет. Это косвенно подтверждает мои доводы о неразумности хнатить в базах что не попадя.







Date: 2015-09-02; view: 348; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию