Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка серверной информации о странице
 
 автор: Владимир55   (29.01.2012 в 14:22)   письмо автору
 
 

Хотел посмотреть, какую информацию предоставляет сервер о странице:

<?php
    
echo "<br>ENV " $_ENV['HTTP_IF_MODIFIED_SINCE'];
    echo 
"<br>SERVER" $_SERVER['HTTP_IF_MODIFIED_SINCE'];


Но, почему то, ничего не выводится...

  Ответить  
 
 автор: cheops   (29.01.2012 в 14:39)   письмо автору
 
   для: Владимир55   (29.01.2012 в 14:22)
 

Сервер не устанавливает в переменные окружения, все HTTP-заголовки, какие только видит. Устанавливаются только те, которые прописаны и которые разрешены администратором/разработчиком. В PHP вы их так просто не передадите, как минимум нужно установить переменную окружения на уровне .htaccess и модуля mod_rewrite. Однако, это еще не означает, что переменная окружения будет передана в скрипт.

  Ответить  
 
 автор: Владимир55   (29.01.2012 в 14:57)   письмо автору
 
   для: cheops   (29.01.2012 в 14:39)
 

нужно установить переменную окружения на уровне .htaccess и модуля mod_rewrite. Однако, это еще не означает, что переменная окружения будет передана в скрипт.

То есть, и этого (корректировки .htaccess и mod_rewrite) недостаточно?

Что же ещё надо?

  Ответить  
 
 автор: cheops   (29.01.2012 в 15:31)   письмо автору
 
   для: Владимир55   (29.01.2012 в 14:57)
 

Скажем так не всегда достаточно, обычно, у администратора есть возможность запретить или разрешить установку переменных окружений... на нормальном хостинге, я так понимаю это должно быть разрешено. Т.е вам нужно как-то через RewriteRule и E установить переменную окружения, при этом я так понимаю, надо сначала необходимо выцепить запрос с нужным HTTP-заголовоком при помощи RewriteCond и %{HTTP:header} (вместо header имя нужного заголовка). Вот только когда вы установите переменную окружения, её можно искать в $_ENV (лучше сначала в нем и сразу при помощи print_r()). Это конечно, при условии, что на уровне php.ini не запрещена установка переменных окружения... а то там любят ограничивать префиксом скажем PHP_.

  Ответить  
 
 автор: Владимир55   (29.01.2012 в 16:21)   письмо автору
 
   для: cheops   (29.01.2012 в 15:31)
 

Не могли бы Вы испытать эти коды на Вашем хостинге?

Кажется, у Вас Мастерхост?
Любопытно было бы сравнить.

  Ответить  
 
 автор: cheops   (29.01.2012 в 16:41)   письмо автору
 
   для: Владимир55   (29.01.2012 в 16:21)
 

Скорее всего лучше вообще локально начитать... Попробую чуть попозже.

  Ответить  
 
 автор: Владимир55   (30.01.2012 в 11:03)   письмо автору
288 байт
 
   для: cheops   (29.01.2012 в 16:41)
 

Не могли бы Вы испытать эти коды на Вашем хостинге?
Кажется, у Вас Мастерхост?
Любопытно было бы сравнить.

Скорее всего лучше вообще локально начитать... Попробую чуть попозже.


Все ж таки, интересно было бы узнать, работает ли это на Мастерхосте. Можете попробовать (файл для теста в приложении)?

  Ответить  
 
 автор: cheops   (30.01.2012 в 12:52)   письмо автору
 
   для: Владимир55   (29.01.2012 в 16:21)
 

Продолжение в теме по ссылке http://softtime.ru/forum/read.php?id_forum=1&id_theme=84738

  Ответить  
 
 автор: Sfinks   (29.01.2012 в 23:19)   письмо автору
 
   для: Владимир55   (29.01.2012 в 14:22)
 

Не отвечал, т.к. сам был не уверен... Теперь разобрался!
Дело в том, что браузер не всегда отправляет заголовок "if_modified".
Если со страницей были переданы заголовки запрещающие кеширование
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
, а с динамическими страницами на правильно настроенных серверах они передаются по умолчанию, то браузер при обновлении и не пытается отправить "if-mod", т.к. в кеше этих страниц и нет.
А вот со статичными страницами иначе. Они передают заголовки разрешающие кеширование, поэтому браузер их сохраняет и потом перепроверяет.

Либо ситуация, в которой мне удалось выловить этот заголовок - у меня часть CSS генерируется в пхп. Т.е. на ЧПУ поступает запрос, например:
http://site.info/154/5059/thumb.css
Реального такого файла, естественно, нету и mod_rewrite перекидывает запрос на
thumb.css.php?c=$1&g=$2
в пхп генерируется css и отдаются заголовки
header("Content-type: text/css");
header("Last-Modified: Sun, 25 Dec 2011 10:00:00 +0400");
header("Cache-Control: private, max-age=2592000, pre-check=605000");
поэтому при обновлении браузер передает заголовок IF-MOD и вот тогда он в этот пхп файл поступает в массиве
$_SERVER["HTTP_IF_MODIFIED_SINCE"] == "Sun, 25 Dec 2011 10:00:00 GMT"

Единственное, что могу добавить - УДАЧИ Вам ))))))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования