2009-12-18 145 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 2009-12-18 20:48:30

+0

@FinalDestiny我不認爲你得到的重點。 – 2009-12-18 20:49:15

+0

即使您停止緩存,人們也可以通過在新標籤中打開鏈接找到方法。您可以在圖像頁面上放置「給我新圖像」鏈接,以便他們查看新圖像。 – sakabako 2009-12-18 21:24:45

0

使用location.replace("URL_HERE");而不是location.href = "URL_HERE";將阻止重定向在用戶的歷史記錄中創建新條目。但我仍然認爲阿農的回答是絕對正確的。

0

那麼如果「黑客」已禁用JS呢?

我會建議你做一些其他的東西:24小時

  • 給予註冊

    • 限制圖像的一個可以投票選出每24小時
    • 量保持在數據庫中的所有選票用戶更高的最大票數限制
  • 0

    您需要動態地將圖像提供給用戶,而不是指向目錄中的文件。所以你有一個

    image.php?id=1234 
    

    裏面image.php你幾乎只是打開圖像,uudecode它,並打印到瀏覽器。由於圖像是以編程方式檢索的,因此您可以簡單地將其阻擋或在其上強制新圖像。如果您不希望用戶檢索特定圖像並希望始終提供隨機圖像,則不要在網址中使用任何ID,只需提供隨機圖像文件即可。

    它也有助於堅持在URL中無用的隨機數據,在這種情況下生成一個UUID將是一個好主意。即使你走這麼一個解決方案,只是不會再像做

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

    這已經不是什麼靈丹妙藥,但它的另一個伎倆,以防止圖像緩存。