Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   SSI и PHP в одном файле (http://forum.oszone.net/showthread.php?t=52298)

E-mail 03-08-2005 00:40 345529

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 345613

Попробуйте следующий код
Код:

header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
. Может глюк из-за неверной записи значения.

E-mail 03-08-2005 11:47 345638

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 345651

E-mail
А зачем тебе такое? SSI еще и плюс php?

vadimiron 03-08-2005 13:18 345659

если есть PHP, то можно инклудить всё что угодно с помощью РНР

Prisoner 03-08-2005 13:25 345660

В самом деле...:blink:

mar 03-08-2005 14:38 345674

Цитата:

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

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

archy 03-08-2005 16:40 345698

Не перевелись на руси богатыри... и интернет им провели :)

E-mail 03-08-2005 21:50 345763

ничего не имею против чувства юмора.

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

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

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

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

archy
Цитата:

если есть PHP, то можно инклудить всё что угодно с помощью РНР
вот я и обдумываю: как сделать чтобы в файле котором присутствует ssi был php

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

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

mar 05-08-2005 17:57 346209

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

E-mail 06-08-2005 16:24 346341

mar

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

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

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

E-mail 06-08-2005 16:30 346344

чесно говоря меня больше интересует как last-modified и if-modified-sinse происходит в ssi :-\

mar 06-08-2005 23:06 346404

ага. то есть проблема в том, что имеем "плохой" сервер, не отдающий дату и надо ему тем, или иным способом помочь. Так?
Ну, например, смотрим http://masterhost.ru/support/doc/apache/#last-modified. Читаем:
Цитата:

примеры: заголовок last-modified

В ряде случаев требуется, чтобы web-сервер выдавал HTTP-заголовок Last-Modified. К примеру, при регистрации вашего ресурса на Яндексе, возникает ошибка "Неправильные даты".

Для статических документов, согласно документации по Apache:

http://httpd.apache.org/docs/mod/mod....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 346425

меня интересует ssi

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

mar 07-08-2005 02:04 346426

"Using SSI to Display Last Modified Time"
или много-много всего из гугла

archy 07-08-2005 11:47 346449

возможно такое спасет отца русской демократии:
Код:

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


E-mail 08-08-2005 00:42 346552

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 346555

вот еслибы вместо
Код:

$ 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 346570

E-mail
Вот здесь вроде подобное обсуждается, почитайте, может поможет....

archy 08-08-2005 06:55 346576

E-mail
А расскажи ка нам друг, зачем тебе этот заголовок? Может быть есть другие варианты решения

Ramzes_ 21-11-2005 02:40 376062

Подскажите плиз... файлик shtml, включаем инклудом php, апач выдает ошибку. В логах такая вот ерунда:

[Mon Nov 21 02:36:06 2005] [error] [client 127.0.0.1] (22)Invalid argument: couldn't create child process: 22: php-cgi.exe
[Mon Nov 21 02:36:06 2005] [error] [client 127.0.0.1] (22)Invalid argument: couldn't spawn child process: D:/Server/PHP/php-cgi.exe


На хостинге все работает. Может что надо поменять в конфиг-файле?


Время: 12:26.

Время: 12:26.
© OSzone.net 2001-