С нами с 10.05.04
Сообщения: 419
Рейтинг: 191
|
Добавлено: 26/11/04 в 17:14 |
По выводимому содержимому все понятно - откываешь файл и считываешь в строку длина строки + контрольная сумма и фиг ее злобный вебмастер изменит так чтобы я не заметил, а изменеие его скрипта редиректа-то как отследить? ну хоть при наличии прямой ссылки на файл можно вроде бы получить дату модификации, но насколько я понял сервер не спешит делиться такой инфой. или не заморачиваться?
А вообще вопрос сводится к возможности определить дату модификации файла на удаленном сервере .
Спасибо, что выслушали
|
|
|
|
С нами с 14.07.04
Сообщения: 221
Рейтинг: 59
|
Добавлено: 26/11/04 в 21:00 |
|
|
|
|
С нами с 10.05.04
Сообщения: 419
Рейтинг: 191
|
Добавлено: 27/11/04 в 09:18 |
vitaminxxx: спасибо за дельный совет
|
|
|
|
С нами с 01.10.03
Сообщения: 751
Рейтинг: 318
|
Добавлено: 27/11/04 в 09:52 |
не многие сервера спешат отдать этот заголовок, большинство молчит
заставить отдать - нельзя
так что толку 0, делай мд5 и всё
|
|
|
|
С нами с 10.05.04
Сообщения: 419
Рейтинг: 191
|
Добавлено: 27/11/04 в 10:59 |
Jam: может тогда уж crc32 ? в данном случае логичнее.
а вообще я был бы рад если кто-нибудь еще выскажет свое мнение
|
|
|
|
С нами с 01.10.03
Сообщения: 751
Рейтинг: 318
|
Добавлено: 27/11/04 в 11:19 |
почему логичнее?
вот например md5_file (string filename)
спец. функция для проверки целостности файла
для строки просто md5 если больше неравится можно crc32 но разницы я не вижу
|
|
|
|
С нами с 10.05.04
Сообщения: 419
Рейтинг: 191
|
Добавлено: 27/11/04 в 11:27 |
но если функции md5_file передается строка с именем файла, то как мы можем работать с файлом, который находится на другом сервере? т.е. придется считывать содержимое, а потом остается md5() или crc32() ? Или возможно натравить на удаленный файл?
|
|
|
|
С нами с 01.10.03
Сообщения: 751
Рейтинг: 318
|
Добавлено: 27/11/04 в 11:47 |
Цитата: | Или возможно натравить на удаленный файл |
проверил, невозможно, только на локальный
Цитата: | т.е. придется считывать содержимое, а потом остается md5() или crc32() |
так точно
|
|
|
|
С нами с 10.05.04
Сообщения: 419
Рейтинг: 191
|
Добавлено: 27/11/04 в 12:01 |
Jam писал: | проверил, невозможно, только на локальный
|
я тоже, только подумал а не криворук ли я
|
|
|
|
С нами с 01.10.03
Сообщения: 751
Рейтинг: 318
|
Добавлено: 27/11/04 в 12:14 |
foma писал: | я тоже, только подумал а не криворук ли я |
в данном случае невозможно назвать входной поток файлом, так как у него отсутсвуют необходимые атрибуты
из сети мы получаем не file а string
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 27/11/04 в 23:36 |
Jam писал: | не многие сервера спешат отдать этот заголовок, большинство молчит
заставить отдать - нельзя |
Так запрос HTTP 1.1 надо делать, а не 1.0. Last-Modified прописан в RFC 2616 (спецификация HTTP 1.1) как стандартный хедер. И если нужно только дату проверить, то достаточно запроса HEAD
Код: |
HEAD /location.html HTTP/1.1
|
И лови Last-Modified. А можно не сокетом пользоваться, а модулем curl из php, если установлен, он удобнее все же.
|
|
|
|
Друг зайцев
С нами с 25.01.03
Сообщения: 898
Рейтинг: 115
|
Добавлено: 28/11/04 в 03:04 |
я бы не экономил и каждый раз бы читал весь файл и считал бы контрольную суму :)
на мой взгляд так надёжнее.
|
|
|
|
С нами с 01.10.03
Сообщения: 751
Рейтинг: 318
|
Добавлено: 28/11/04 в 13:39 |
Dr.Syshalt писал: | Так запрос HTTP 1.1 надо делать, а не 1.0. Last-Modified прописан в RFC 2616 (спецификация HTTP 1.1) как стандартный хедер. И если нужно только дату проверить, то достаточно запроса HEAD
Код: |
HEAD /location.html HTTP/1.1
|
И лови Last-Modified. А можно не сокетом пользоваться, а модулем curl из php, если установлен, он удобнее все же. |
Код: |
$fp = fsockopen ("mail.ru", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs ($fp, "HEAD / HTTP/1.1\r\nHost: mail.ru\r\n\r\n");
while (!feof($fp)) {
echo fgets ($fp,128);
}
fclose ($fp);
}
|
HTTP/1.1 200 OK
Date: Sun, 28 Nov 2004 10:37:34 GMT
Server: 3WservRT 2001, VxWorks 5.4
Set-Cookie: Mpopl=615002419; expires=Sun, 28 Nov 2004 10:52:34 GMT; path=/
Set-Cookie: mrcu=794A41A9AA6E4FD7E0A22199C452; expires=Tue, 28 Nov 2006 10:37:34 GMT; path=/
Connection: close
Content-Type: text/html; charset=windows-1251
Vary: user-agent
Нету Last-Modified
не заставишь отдать
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 28/11/04 в 13:48 |
Jam писал: | Нету Last-Modified
не заставишь отдать |
Если я правильно помню- это означает динамическую страницу (shtml, php, asp и т.д.). Т.е. для проверки ГАЛЕРЕИ - уже непорядок.
Могу ошибаться.
|
|
|
|
Снимаю. Порчу.
С нами с 25.12.99
Сообщения: 1234
Рейтинг: 786
|
Добавлено: 28/11/04 в 13:59 |
Sams писал: | Если я правильно помню- это означает динамическую страницу (shtml, php, asp и т.д.). Т.е. для проверки ГАЛЕРЕИ - уже непорядок.
Могу ошибаться. |
точно, динамические страницы по дефолту не отдают Last-Modified
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 28/11/04 в 17:51 |
Цитата: |
А вообще вопрос сводится к возможности определить дату модификации файла на удаленном сервере |
Вот на это ответ я дал. Если другие вопросы есть - пусть их формулирует.
|
|
|
|
С нами с 14.07.04
Сообщения: 221
Рейтинг: 59
|
Добавлено: 28/11/04 в 21:56 |
Jam,
вообще, топикстартер поставил вопрос: как узнать дату последней модификации? А узнать ее через сравнение контрольных сумм используя MD5 (или путем подсчета количества символов в теле документа) не возможно. Только через Last_Modified.
Контрольные же суммы можно получать у отвечающего сервера через заголовок Content-MD5, а не считать их самому. Точно также можно получать Content-Length и не считать количество символов.
foma, почитай RFC 2068, там целый раздел вопросам кэширования посвящен.
|
|
|
|
С нами с 10.05.04
Сообщения: 419
Рейтинг: 191
|
Добавлено: 30/11/04 в 09:51 |
всем спасибо, буду читать, осознавать, пробовать.
|
|
|
|