Показать полную графическую версию : SSI и PHP в одном файле
нужно отсылать заголовок last modified при запросе index.shtml
можно ли это сделать только с помощью SSI ?
если нет то как сделать чтобы в файле shtml одновременно работал код php и инклюды ssi ?
покачто для выполнения задачи безуспешно были приняты меры:
пытался добавить в файл index.shtml запись вида: <!--#include virtual="http.php"--> а в файл http.php прописал код: <?php header("last-modified: 123"); ?>
но при запросе index.shtml заголовки не отдаются(((
что тут делать, помогите
Prisoner
03-08-2005, 09:57
Попробуйте следующий код
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');. Может глюк из-за неверной записи значения.
Prisoner
пробывал(
как сделать чтобы в файле shtml одновременно работал код php и инклюды ssi ?
это возможно в апаче или в httpaccess ?
щас попробую приинклюдить перл скрипт <!--#exec cgi="perl.pm"-->
в perl как должен выглядеть скрипт отправляющий заголовок?
вот нашел это но оно не работает:
#!/usr/bin/perl
my @ns_headers = ('User-Agent' => 'Mozilla/4.76 [en] (Win98; U)',
'Accept' => 'image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, image/png, */*',
'Accept-Charset' => 'iso-8859-1,*,utf-8',
'Accept-Language' => 'en-US',
);
...
$response = $browser->get($url, @ns_headers);
E-mail
А зачем тебе такое? SSI еще и плюс php?
vadimiron
03-08-2005, 13:18
если есть PHP, то можно инклудить всё что угодно с помощью РНР
Prisoner
03-08-2005, 13:25
В самом деле...:blink:
А зачем тебе такое? SSI еще и плюс php?
Это, наверное, игра в поддавки для webmaster-ов - у кого медленнее работать будет. Идея-то хороша: парсим текс на ssi, парсим текст на php, включаем интерпритатор perl-a, включаем интерпритатор php, отдаем это все обратно... В общем, кто больше накрутит =)
E-mail
на всякий случай - помним, что header надо отдавть до всякой лезущей в броузер строки?
Не перевелись на руси богатыри... и интернет им провели :)
ничего не имею против чувства юмора.
но ситуация такая:
либо переписывать сайт, либо внести изменения на то что уже есть.
само собой напрашивается второй вариант, так как сайт не мой и нету никакого желания показывать авторам "как надо".
в общем кому интересно, я тут облазил гугл и узнал что в апаче 1.1.3 оригинальной версии ssi заголовки last mod и if mod since вообще не отрабатываются.
в следущих версиях эта ошибка вроде бы(!) присутствовала, но как то расплывчато об этом, а потом бум и в 1.3.* какойто версии опять пишут что этот баг исправлен.. както странно они его исправляют исправляют с каждой версией, а он всеравно присутствует.. кому интересно леха апач орг рубрика "подробнее" о версии апача..
проблема заголовка last mod мной вроде решена, кому интересно, при запросе страницы содержащей инклюды ssi заголовок last mod сознательно глушится, принудительно заставить отдавать его можно с помощью строки в конфиге xbithack full + поставить exec для группы на выполнение в файле с ssi.
с if mod since проблема еще хуже... вродебы ошибка 304 выдается если файл не изменен, но пропадает last mod... а при запросе if mod since настоящего времени запрос проглатывается и ответ выдается будто его и нету.. казалось бы нет программы да и смысла запрашивать у сервера изменялси ли файл с настоящего времени до настоящего времени, Но тем не мение вроде как это стандарт...
продолжаю копать.. хотелось бы все-таки узнать как настроить коректно заголовок if mod since для ssi под апач 1.3.3... вопрос открыт.
archyесли есть PHP, то можно инклудить всё что угодно с помощью РНР
вот я и обдумываю: как сделать чтобы в файле котором присутствует ssi был php
дело в том что сайт на ssi + php + perl + xmlt + sql ну и ксс и хтмл там всякий
и шаблоны сделаны с использованием ssi а это не только инклюды(!), переписывать все что сделано с помощью ssi и подругому обдумывать логику строения на php не представляется возможным изза объема ресурса.
E-mail
я, конечно, дико извиняюсь, а как насчет document.lastmodified на JavaScript? Он раньше прекрасно разруливал ситуацию. Хотя для динамических сайтов это все вообще теряет смысл =/
В чем вообще задача-то про lastmodified?
mar
Свойство lastModified в JavaScript происходит от даты шапки HTTP, высылаемой сервером. Серверы обычно получают эту дату, проверяя дату изменения файла или контента в ячейке бд.
Дата последнего изменения не является необходимой частью шапки/header (если банально оценивать это со стороны, что клиент запросил информацию - сервер отдал информацию), и некоторые серверы(плохие серверы) её не предоставляют. Если сервер не возвращает информацию о дате последнего изменения, JavaScript получает 0, который отображается как January 1, 1970 GMT.
т.е. проще говоря яваскрипт работает на машине клиента и не может заставить сервер выдавать заголовок до того как сам перетечет на клиентскую машину вместе с остальным контентом.
чесно говоря меня больше интересует как last-modified и if-modified-sinse происходит в ssi :-\
ага. то есть проблема в том, что имеем "плохой" сервер, не отдающий дату и надо ему тем, или иным способом помочь. Так?
Ну, например, смотрим http://masterhost.ru/support/doc/apache/#last-modified. Читаем:
примеры: заголовок last-modified
В ряде случаев требуется, чтобы web-сервер выдавал HTTP-заголовок Last-Modified. К примеру, при регистрации вашего ресурса на Яндексе, возникает ошибка "Неправильные даты".
Для статических документов, согласно документации по Apache:
http://httpd.apache.org/docs/mod/mod_include.html#xbithack
cервер будет выдавать значение last-modified в том случае, если прописана директива "XBitHack full" (просто пропишите эту строку в .htaccess), и для файла, к которому происходит обращение, выставлен атрибут "исполняемый" для группы.
Это действительно для html-файлов. В скриптах last-modified выдается иными средствами. Например, если учесть то, что php-скрипт генерирует код динамически, то самым логичным будет в качестве last-modified отдавать текущую дату и время. Реализуется это следующим образом:
<? header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); ?>
Внимание: команда header должна выполняться в php-скрипте до того, как скрипт начнет выдавать html-текст в браузер пользователя.
Полезные ссылки по теме:
* http://www.php.net/manual/en/function.header.php
* http://www.php.net/manual/en/ref.apache.php
меня интересует ssi
с php и html все и так понятно(
"Using SSI to Display Last Modified Time" (http://www.dionysia.org/software/lastupdated/ssi-method.html)
или много-много всего из гугла (http://www.google.ru/search?q=ssi+modified)
возможно такое спасет отца русской демократии:
$ cat test.shtml
<!--#include virtual="test.php" -->
$ cat test.php
<?php echo "test"; ?>
mar
по твоей ссылке вводит на экран дату изменения, а мне надо в заголовках отправлять , до вывода контента
archy
угу этот код работает, но если так:
$ cat test.shtml
<!--#include virtual="test.php" -->
$ cat test.php
<?php header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); ?>
файл содержащий ssi не выдает дату изменения и if mod since,
апач ssi сознательно глушит заголовки в оригинальных версиях апача...
строка XBitHack full насильно заставляет апач их выдавать(что видно из названия),
но заголовки всеравно выдаются глючно, а именно:
1) дата изменения не выдается если был принят заголовок if-modified-since
2) заголовок if-modified-since настоящее время не отрабатывается вообще, просто проглатывается и сервер ведет себя так будто его нету
пфффф, вот такие пироги ((
вот еслибы вместо
$ cat test.shtml
<!--#include virtual="test.php" -->
$ cat test.php
<?php header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); ?>
можно бы было:
test.shtml
<?php header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); ?>
<!--#include virtual="header.shtml" -->
<b>124435456</b>
<!--#include virtual="footer.shtml" -->
то возможно заголовки бы отрабатывались, но КАК заставить одновременно отрабатываться в одном файле php язык и ssi язык?
vadimiron
08-08-2005, 03:22
E-mail
Вот здесь (http://wasd.vsm.com.au/ht_root/doc/env/env_0400.html#45) вроде подобное обсуждается, почитайте, может поможет....
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.