Войти

Показать полную графическую версию : SSI и PHP в одном файле


Страниц : [1] 2

E-mail
03-08-2005, 00:40
нужно отсылать заголовок 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');. Может глюк из-за неверной записи значения.

E-mail
03-08-2005, 11:47
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);

archy
03-08-2005, 12:47
E-mail
А зачем тебе такое? SSI еще и плюс php?

vadimiron
03-08-2005, 13:18
если есть PHP, то можно инклудить всё что угодно с помощью РНР

Prisoner
03-08-2005, 13:25
В самом деле...:blink:

mar
03-08-2005, 14:38
А зачем тебе такое? SSI еще и плюс php?
Это, наверное, игра в поддавки для webmaster-ов - у кого медленнее работать будет. Идея-то хороша: парсим текс на ssi, парсим текст на php, включаем интерпритатор perl-a, включаем интерпритатор php, отдаем это все обратно... В общем, кто больше накрутит =)

E-mail
на всякий случай - помним, что header надо отдавть до всякой лезущей в броузер строки?

archy
03-08-2005, 16:40
Не перевелись на руси богатыри... и интернет им провели :)

E-mail
03-08-2005, 21:50
ничего не имею против чувства юмора.

но ситуация такая:

либо переписывать сайт, либо внести изменения на то что уже есть.

само собой напрашивается второй вариант, так как сайт не мой и нету никакого желания показывать авторам "как надо".

в общем кому интересно, я тут облазил гугл и узнал что в апаче 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... вопрос открыт.

E-mail
03-08-2005, 22:00
archyесли есть PHP, то можно инклудить всё что угодно с помощью РНР

вот я и обдумываю: как сделать чтобы в файле котором присутствует ssi был php

дело в том что сайт на ssi + php + perl + xmlt + sql ну и ксс и хтмл там всякий

и шаблоны сделаны с использованием ssi а это не только инклюды(!), переписывать все что сделано с помощью ssi и подругому обдумывать логику строения на php не представляется возможным изза объема ресурса.

mar
05-08-2005, 17:57
E-mail
я, конечно, дико извиняюсь, а как насчет document.lastmodified на JavaScript? Он раньше прекрасно разруливал ситуацию. Хотя для динамических сайтов это все вообще теряет смысл =/
В чем вообще задача-то про lastmodified?

E-mail
06-08-2005, 16:24
mar

Свойство lastModified в JavaScript происходит от даты шапки HTTP, высылаемой сервером. Серверы обычно получают эту дату, проверяя дату изменения файла или контента в ячейке бд.

Дата последнего изменения не является необходимой частью шапки/header (если банально оценивать это со стороны, что клиент запросил информацию - сервер отдал информацию), и некоторые серверы(плохие серверы) её не предоставляют. Если сервер не возвращает информацию о дате последнего изменения, JavaScript получает 0, который отображается как January 1, 1970 GMT.

т.е. проще говоря яваскрипт работает на машине клиента и не может заставить сервер выдавать заголовок до того как сам перетечет на клиентскую машину вместе с остальным контентом.

E-mail
06-08-2005, 16:30
чесно говоря меня больше интересует как last-modified и if-modified-sinse происходит в ssi :-\

mar
06-08-2005, 23:06
ага. то есть проблема в том, что имеем "плохой" сервер, не отдающий дату и надо ему тем, или иным способом помочь. Так?
Ну, например, смотрим 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

E-mail
07-08-2005, 01:47
меня интересует ssi

с php и html все и так понятно(

mar
07-08-2005, 02:04
"Using SSI to Display Last Modified Time" (http://www.dionysia.org/software/lastupdated/ssi-method.html)
или много-много всего из гугла (http://www.google.ru/search?q=ssi+modified)

archy
07-08-2005, 11:47
возможно такое спасет отца русской демократии:

$ cat test.shtml
<!--#include virtual="test.php" -->
$ cat test.php
<?php echo "test"; ?>

E-mail
08-08-2005, 00:42
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 настоящее время не отрабатывается вообще, просто проглатывается и сервер ведет себя так будто его нету

пфффф, вот такие пироги ((

E-mail
08-08-2005, 00:46
вот еслибы вместо

$ 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