Как можно получить php-скриптом часть REQUEST_URI без расширения html, htm, php и т.п?
Или заменить html на cache в этом самом REQUEST_URI?
У меня сейчас такая задача:
Требуется в код динамически генерируемых страниц добавить скрипт, который будет проверять, существование этой страницы в кэше сервера. То есть с расширением cache, а не html.
if (file_exists(--DIR--.'/cache/НАЗВАНИЕ_СТРАНИЦЫ.cache'))
Как я могу получить часть url, которая соответствует этому НАЗВАНИЮ СТРАНИЦЫ? То есть REQUEST_URI без расширения?
Спасибо!
Пробовала так:
if (file_exists(__DIR__.'/cache/filename($_SERVER["REQUEST_URI"]).cache'))
{
readfile(__DIR__.'/filename($_SERVER["REQUEST_URI"]).cache');
exit();
Но получаю в результате файл с именем: filename($_SERVER["REQUEST_URI"]).cache Не получает скрипт имя файла.
Аналогичные результаты с
if (file_exists(__DIR__."/cache/pathinfo(__FILE__, PATHINFO_FILENAME).cache"))
{
Результат - файл с именем :
pathinfo(FILE, PATHINFO_FILENAME).cache
readfile(__DIR__."/cache/pathinfo(__FILE__, PATHINFO_FILENAME).cache");
exit();
Вот такой код у меня прекрасно заработал без всякого дополнительного расширения .cache. В самом начале страницы перед html:
<?php
$curr_url = basename($_SERVER['REQUEST_URI']);
if (file_exists(__DIR__."/cache/$curr_url"))
{
readfile(__DIR__."/cache/$curr_url");
exit();
}
ob_start();
?>
И в самом конце, после закрывающего хтмл:
<?php
$buffer = ob_get_contents();
$fp = fopen(__DIR__."/cache/$curr_url", 'w');
fwrite($fp, $buffer);
ob_end_flush();
fclose($fp);
?>
Все файлы сохраняются в папку cache с расширением php или html (смотря как была запрошена страница). И отдаются следующему пользователю из cache без запроса к БД.
Ура, товарищи!
И зря Вы, господа, минусовали ответ Grigory Fedorinov. Ибо он абсолютно правильно предложил использовать basename вместо filename.
$filename=basename($_SERVER["REQUEST_URI"]); //Получаем название страницы без расширения
$filename_md5 = md5($_SERVER["REQUEST_URI"]); //Получаем хеш-код страницы (32-значный уникальный код для страницы) для уникальности страницы в кеше.
// $filename."_".$filename_md5 - Человеко-читаемое и уникальное хранение страницы в кеше
//При записи в кеш в начале страницы пишется html-комментарий с $_SERVER["REQUEST_URI"] если необходимо получить полное расположение страницы на сайте
if (file_exists(__DIR__."/cache/{$filename."_".$filename_md5}.cache")){
echo file_get_contents(__DIR__."/{$filename."_".$filename_md5}.cache");
exit();
}
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Выводит на экран в любом случае "Введите коректное число1" Код на PHP :
У меня есть серверная часть написанная на php, мне нужно её максимально защитить от XSS и подобных атак