2012-08-25 51 views
0

我遇到問題。我有一個大約有1200個按鈕的頁面,該網站將不會是一個會員網站,我只是想跟蹤每個訪問者,以確保他們點擊的按鈕不會再被他們點擊,直到24小時過期。停止訪問者再次點擊一個鏈接,直到24小時過期

我知道我可以使用餅乾,但那對於1200個按鈕來說太多了。

這裏是按鈕的HTML像:

<li><a href="http://google.com" class="btn_smallorange" id="button1">Button 1</a></li> 

你有什麼建議 - 我願意接受幾乎任何類型的腳本,但知道這個網站是用PHP做?

+0

唯一的另一種方法來完成這是保存IP,但設置這個數據在一個cookie是沒有什麼,我建議:留下來餅乾 – Soundz

+0

我想使用餅乾,但鏈接太多,除此之外沒有限制多少餅乾任何一個瓦特ebsite可以在用戶的​​機器上設置? –

+1

如果需要,您可以將表單序列化並將所有內容存儲在一個cookie中。 –

回答

3

您的跟蹤給定的瀏覽器帶有某種瀏覽器的識別ID的(所以你可能知道一個給定的用戶是誰)的選擇是:

  1. 餅乾
  2. 本地存儲

你用於存儲1200個按鈕的狀態的選擇是:狀態理論值的

  1. 服務器側存儲在由服務器提供給網頁
  2. 餅乾(可能有數據崩潰到一個位每BUTTON0
  3. 本地存儲

因此,舉例來說,你可以結合存儲瀏覽器identifing值在cookie中將實際的按鈕狀態存儲在服務器端數據庫中。然後,在呈現頁面時,可以在數據庫中查找cookie中的browserID的按鈕狀態,並禁用或從呈現的HTML頁面中刪除相關按鈕。

通過將1200個按鈕的狀態摺疊爲每個按鈕一個位,您可以完成cookie中的所有存儲。使用AZ和az以及0-9和幾個符號,每個字符可以輕鬆地擁有64個值,這樣您可以爲每個字符存儲32個按鈕的開/關狀態,因此可以存儲1200個按鈕的開/關狀態用38個字符,很容易裝入cookie中。如果您還必須爲每個按鈕存儲時間/日期,那麼這將不適合cookie,因此您將留給服務器端存儲或本地存儲。

僅供參考,我希望您明白,任何客戶端方案都很容易解決。事實上,如果您只是試圖阻止用戶多次訪問同一個網址,他們只需爲原始網址添加書籤,並且即使訪問您的網頁,他們也可以隨時隨地前往該網址。或者,他們只需擦除cookie或本地存儲。或者,他們可以轉到不同的瀏覽器。

防止多次訪問的唯一方法是要求用戶驗證並驗證(在您的Web服務器上)允許給定的登錄用戶在呈現頁面之前訪問任何給定的頁面。所以,如果你想強有力地做到這一點,那麼它必須全部在服務器端完成,你需要某種類型的站點登錄。

+0

感謝您的迴應,如果我不必禁用24小時的鏈接,所有這一切將會變得更加容易。 –

+0

@RogerWilliams - 防止用戶使用不同的瀏覽器或爲原始鏈接添加書籤? – jfriend00

+0

我的注意力不在於安全性,而在於使用戶友好,如果用戶刷新或離開頁面,我希望用戶在過去24小時內看到他們點擊了哪個按鈕,以便他們可以專注於其他用戶鏈接。 –

1

如果您想要避免訪問者瀏覽器上最多1200個cookie的擴散,您需要查看「會話」。會話在訪問者的瀏覽器上存儲單個ID作爲cookie,然後將其用作服務器上更大的數據存儲區的密鑰。除了速度更快之外,向瀏覽器發送較少的數據意味着用戶看到並混亂的機會減少。

PHP的會話支持在http://php.net/manual/en/intro.session.php

記錄順便說一句,請注意,這是完全微不足道的繞過它依賴於一個cookie的沒有或類似這樣任何限制 - 例如,你可以切換到另一個瀏覽器,使用瀏覽器的「清除歷史記錄」或「隱私瀏覽」模式等。

相關問題