Помогите с 304 ошибкой!

[Удален]
1939

Здравствуйте, помогите пожалуйста правильно настроить 304 ошибку. Делаю вот так но не работает, пишит ошибку: Fatal error: Call to undefined function getallheaders() Помогите исправить. Время я задам сам. Файл уже создан и меняться не будет. Всем заранее спасибо!


<?
$time = "Mon, 20 Dec 2008 09:34:19 GMT";

$request = getallheaders();

if (isset($request['If-Modified-Since']))
{
$modifiedSince = explode(';', $request['If-Modified-Since']);
$modifiedSince = strtotime($modifiedSince[0]);
}
else
{
$modifiedSince = 0;
}
if ($time <= $modifiedSince)
{
header('HTTP/1.1 304 Not Modified');
exit();
}
?>
Knave
На сайте с 01.02.2007
Offline
48
#1
-Zeus-:
пишит ошибку: Fatal error: Call to undefined function getallheaders()

Не знает он эту функцию.

http://php.ru/manual/function.getallheaders.html

функция работоспособна только в том случае, если PHP был собран в качестве модуля Apache
That's what's the deal we're dealin' in
[Удален]
#2

Knave, это я уже понял, а на какую мне ее изменить, чтобы все работало?

mfl
На сайте с 16.10.2006
Offline
134
mfl
#3


<?
$time = "Mon, 20 Dec 2008 09:34:19 GMT";

if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) { $modifiedSince = $_ENV['HTTP_IF_MODIFIED_SINCE']; }
elseif (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $modifiedSince = $_SERVER['HTTP_IF_MODIFIED_SINCE']; }
else { $modifiedSince = 0; }

if ($modifiedSince) {
$modifiedSince = explode(';', $modifiedSince);
$modifiedSince = strtotime($modifiedSince[0]);
}

if ($time <= strtotime($modifiedSince))
{
header('HTTP/1.1 304 Not Modified');
exit();
}
?>

mfl добавил 18.07.2008 в 13:29

будет работать в независимости от того как работает php, модуль апач или в режиме cgi

[Удален]
#4

mfl, ваш код работает но сайт все равно 200 отдает( Смотрю через плагин ФФ httpfox.

mfl
На сайте с 16.10.2006
Offline
134
mfl
#5

сообщите адрес сайта в личку

Заголовки правильные отправлены?

Knave
На сайте с 01.02.2007
Offline
48
#6

Если я правильно все понял, у -Zeus- php уставлен не как модуль Апач, а как cgi. Соответственно, заголовки If-Modified-Since не приходят. Поэтому скрипт отдает код 200.

-Zeus-, почитайте тут: http://www.opennet.ru/base/dev/lastmod_php.txt.html. Должно помочь.

P.S. Пробовал код mfl - работает как надо. Спасибо -Zeus- за наводки на полезную информацию, mfl - за код.

mfl
На сайте с 16.10.2006
Offline
134
mfl
#7
Соответственно, заголовки If-Modified-Since не приходят. Поэтому скрипт отдает код 200.

Значение заголовка "If-Modified-Since" при работе PHP в режиме CGI находится в переменной $_ENV['HTTP_IF_MODIFIED_SINCE'].

Приведенный код корректно функционирует при любом режиме работы PHP

mfl добавил 18.07.2008 в 17:13

Вот ошибка:

if ($time <= strtotime($modifiedSince))

заменить на

if (strtotime($time) <= $modifiedSince)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий