我有一个图片网站,用户可以在其中投票。图像在第一页随机生成!一旦他们投票,他们就会使用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>
谢谢!!!!!
答案 0 :(得分:7)
您不希望使用客户端检查来阻止用户多次投票。那太傻了。
您想在服务器上检查用户是否已经为该图片投票,如果是,请将他们引导至某些“您已经投票选择该页面的哎呀”并且不计算投票数。
答案 1 :(得分:0)
使用location.replace("URL_HERE");
代替location.href = "URL_HERE";
将阻止重定向在用户的历史记录中创建新条目。但我仍然认为Anon的答案绝对正确。
答案 2 :(得分:0)
如果“黑客”已经禁用JS会怎么样?
我建议您做其他一些事情:
答案 3 :(得分:0)
您需要动态地将图像提供给用户,而不是指向目录中的文件。所以你有一个
image.php?id=1234
在image.php里面你几乎只是打开图像,uudecode它,并将其打印到浏览器。由于以编程方式检索图像,因此您可以简单地阻止它或在其上强制新图像。如果您不希望用户检索特定图像并希望始终提供随机图像,则不要在网址中使用ID,只需提供随机图像文件。
它还有助于在url中插入无用的随机数据,在这种情况下生成UUID将是一个好主意。因此,即使您使用的解决方案,也可以执行类似
的操作print '<img src="'. $image .'?'. uniqid() .'">';
这不是银弹,但它是另一种阻止图像缓存的技巧。