PhP Заголовок Last-Modified

Я немного балуюсь с PHP, не то что бы профессионально, как говориться, в свободное время и в удовольствие. Появилась необходимость в скрипте проверяющем время последних изменений на сайте.

<?php
// Получаем дату модификации скрипта и Last-Modified
$last = filemtime($SCRIPT_FILENAME);
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $last) . ' GMT');

// Получаем If-Modified-Since
foreach($_SERVER as $name => $value) {
if($name == 'HTTP_IF_since')
$since = $value; }

//Меняем на  Unix time
if (isset($since)) {
$since = strtotime(preg_replace('/;.*$/', '', $since));
} else {
$since = 0; }

// Сравниваем даты и выдаем заголовок
if ($last <= $since) {
header('HTTP/1.1 304 Not Modified');
exit(); }
?>

Случайные Статьи

Loading…


Количество просмотров :3161

2 Comments

  1. виталий:

    ПРИВЕТ!
    С удовольствием читаю твои статьи, узнаю очень много интересного об администрировании серваков, так для общего развития (как говориться, в свободное время и в удовольствие) .с, а вот рнр приходится заниматься более профессионально, и вот смотря на код выше не могу не поправить )) я не придераюсь, не пойми меня не правильно ))
    так вот, ну например вот эта строка

    foreach($_SERVER as $name => $value) {
    if($name == 'HTTP_IF_MODIFIED_SINCE')
    $since = $value; }

    вообще использовать поиск в массиве перебором его в цикле — неправильно, но если очень хочется, то при выполнении условия «if» нужно прерывать дальнейший перебор командой ‘break’
    а вообще правильно так писать

    $since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) : null;
    • admin:

      Спасибо большое, учту на будущее. Если честно, то PhP для меня это просто увлечение, хотя очень часто помогает в администрировании.

Оставьте коментарий