2009-12-18 5 views
0

У меня есть один веб-сайт изображения, где пользователи могут проголосовать за изображения. ИЗОБРАЖЕНИЯ СЛУЧАЙНО ПОЛУЧАЮТСЯ НА ПЕРВОЙ СТРАНИЦЕ! Как только они проголосуют, они перенаправляются с помощью window.location на страницу сведений об изображении. Если они вернутся, они будут видеть одно и то же изображение ... из кеша браузера .. и они могут голосовать неограниченное время ....Как удалить кеш браузера?

Как удалить кеш? Я хочу, чтобы первая страница обновлялась, когда я нажимаю кнопку «Назад»! Я уже использовал:

<meta http-equiv="Pragma" content="no-cache"> 
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
    <META HTTP-EQUIV="Expires" CONTENT="-1"> 

и

<input type="hidden" id="refreshed" value="no"> 
<script type="text/javascript"> 
    onload=function(){ 
     var e=document.getElementById("refreshed"); 
     if(e.value=="no")e.value="yes"; 
     else{e.value="no";location.reload();} 
     } 
</script> 

спасибо !!!!!

ответ

7

Вы не хотите использовать проверку на стороне клиента, чтобы пользователи не голосовали несколько раз. Это просто глупо.

Вы хотите проверить на сервере, проголосовал ли пользователь за это изображение, и если да, назовите их на какую-то страницу «Увы, вы уже голосовали за эту» и не считаете голосование.

+0

Голосование не добавляется в базу данных, но я хочу, чтобы пользователи, когда нажимали кнопку «Назад», чтобы получать новые изображения! Конечно, они не могут голосовать несколько раз .... Я не использую какие-либо формы, я использую javascript и AJAX для голосования .. – FinalDestiny

+0

@FinalDestiny Я не думаю, что вы получаете смысл. –

+0

Даже если вы остановите кэш, люди найдут способ, возможно, открыв ссылку на новой вкладке. Вы можете поместить ссылку «дать мне новые изображения» на странице изображения, чтобы им было легко просматривать новые изображения. – sakabako

0

Использование location.replace("URL_HERE"); вместо location.href = "URL_HERE"; предотвратит перенаправление от создания новой записи в истории пользователя. Но я все еще думаю, что ответ Анона абсолютно прав.

0

А что, если «хакер» отключил JS?

Я бы порекомендовал вам сделать несколько других вещей:

  • ограничить количество изображения можно проголосовать за за 24 часа
  • держать все голоса в БД в течение 24 часов
  • ДАЙ зарегистрированных users higer max-votes limit
0

Необходимо динамически загружать изображение пользователю, а не указывать на файл в каталоге. Таким образом, у вас есть

image.php?id=1234 

внутри image.php вы в значительной степени просто открыть изображение, uudecode его, и распечатать его в браузере. Так как изображение извлекается программно, вы можете просто заблокировать его или наложить на них новое изображение. Если вы не хотите, чтобы пользователи извлекали определенное изображение и хотите всегда обслуживать случайное изображение, тогда не используйте идентификаторы вообще в URL-адресе и просто производите произвольный файл изображения.

Он также помогает вставлять бесполезные случайные данные в URL-адресе, в этом случае создание UUID было бы хорошей идеей. Так что даже если вы идете с раствором, который просто делает то сделать что-то вроде

print '<img src="'. $image .'?'. uniqid() .'">'; 

Это не серебряная пуля, но это еще один трюк, который предотвращает кэширование изображений.

Смежные вопросы