На сайте имеется система защиты от ботов, алгоритм использован от старого ExBB, то есть просто генерируется случайное число, заносится в сессионные данные, потом скрипт выдергивает это число и по одной картинке выводит числа, которые хранятся в отдельных файлах.
Но столкнулся с проблемой: картинки кэшируются! пользователь вводит числа с кэшированных картинок и ему выдается ошибка.
Как на JavaScript реализвать "принудительное" обновление картинок? или можно это сделать каким-либо другим способом?
captcha не предлагать. что-то другое - пожалуйста.
1. awep - 07 Апреля, 2007 - 11:40:27 - перейти к сообщению
2. yura3d - 19 Июля, 2007 - 15:58:47 - перейти к сообщению
aweb
Не знаю каким образом ты хотел это реализовать на JavaScript. Я предложу немного другой вариант. Браузер кэширует рисунки потому что у них всегда одинаковый URL. Чтобы избавиться от кэширования нужно просто неявно изменять URL, например добавлять в конец запроса в урле случайно сгенерированное число. Сделать это несложно.
Открываеш файл templates/скин/agreed.tpl и в самое начало сразу после <? вставляешь код:
Потом в этом же файле ищешь код:
И заменяешь его на:
Ну вот и всё. Больше кэширования не будет. Проверил, работает как надо.
Не знаю каким образом ты хотел это реализовать на JavaScript. Я предложу немного другой вариант. Браузер кэширует рисунки потому что у них всегда одинаковый URL. Чтобы избавиться от кэширования нужно просто неявно изменять URL, например добавлять в конец запроса в урле случайно сгенерированное число. Сделать это несложно.
Открываеш файл templates/скин/agreed.tpl и в самое начало сразу после <? вставляешь код:
CODE:
$rand = mt_rand(100000, 999999);
Потом в этом же файле ищешь код:
CODE:
<img src='regimage.php?$exbb[sesid]&i=1' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=2' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=3' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=4' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=5' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=6' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=2' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=3' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=4' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=5' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=6' border='0' alt='PersCode'>
И заменяешь его на:
CODE:
<img src='regimage.php?$exbb[sesid]&i=1&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=2&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=3&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=4&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=5&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=6&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=2&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=3&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=4&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=5&rand=$rand' border='0' alt='PersCode'>
<img src='regimage.php?$exbb[sesid]&i=6&rand=$rand' border='0' alt='PersCode'>
Ну вот и всё. Больше кэширования не будет. Проверил, работает как надо.
3. Леголегс - 20 Июля, 2007 - 04:06:37 - перейти к сообщению
yura3d пишет:
Дурной метод. Правильнее использовать заголовки http:например добавлять в конец запроса в урле случайно сгенерированное число.
CODE:
Cache-Control: no-cache
Expires: Mon, 1 Jan 1980 0:00:00 GMT
Expires: Mon, 1 Jan 1980 0:00:00 GMT