2010-01-09 23 views
1

嘿傢伙,即時爲客戶建立一個小產品目錄。我目前正試圖弄清楚如何讓用戶按「流行度」排序。我認爲最簡單的方法是通過在每個產品記錄中包含「視圖」字段。簡單的方法來檢查頁面視圖是唯一的嗎?

本來我並沒有想通過(杜),並認爲我只是添加一個「視圖」計數,當檢索特定產品的函數被調用。當然,問題在於它沒有考慮有人刷新頁面30,000次。

什麼是最好的方式去做這件事? PHP有任何方式來看看訪問是否獨一無二?

我使用php/codeigniter/mysql/html/css/javascript/jquery。

回答

5

如果客戶端已經訪問會話變量中的頁面並運行相同的視圖查詢,那麼您可以存儲它。現在,這不會阻止用戶關閉瀏覽器,重新打開和返回,但它應該提供體面的保護。如果這還不夠,可以轉到Cookie,然後是用戶註冊或IP跟蹤。

好的,會議的方法。在您的網頁時運行:

session_start(); 
if(!isset($_SESSION['page_views']['some_unique_string'])){ 
    $_SESSION['page_views']['some_unique_string'] = true; 
    // update your database 
} 

注意,你要確保'some_unique_string'是獨一無二的你在跟蹤意見的頁面。

該方法對於餅乾幾乎完全相同。

+0

這可能是一個好的開始,如果不需要,我寧願避免使用cookie。 – Roeland 2010-01-09 03:15:39

+1

會話變量不需要cookie。 – 2010-01-09 03:16:58

0

如果你想確保頁面瀏覽是唯一的,你必須存儲所有頁面瀏覽的遠程IP。真的沒有其他可靠的方式來知道訪問者是否訪問過。在他們的系統中放置一個cookie將在以後出現一百萬種不同的原因,他們清除了他們的cookies,他們使用了不同的瀏覽器等,但是他們需要一個帶有外鍵的視圖表。

你可以找到所有這種代碼在我的自由評分的圖像腳本在這裏:

http://destiney.com/php

這裏有一個演示:

http://ratedsite.com/

看那addImageRating.php腳本。

+0

wouldnt相當資源密集.. – Roeland 2010-01-09 03:25:42

+1

這不是一個完美的方法,因爲有些ISP不會給每個用戶一個專用的IP。這在大學中可能很常見,並且曾經是美國在線的一大問題。這就是說,我也更喜歡統計獨特的IP來確定我網站的獨特性。只要明白有些警告。 – Gattster 2010-01-09 03:27:49

+0

關於你對資源密集型的評論:如果你需要一個不是資源密集型的解決方案,那麼就使用cookies。如果你想讓別人利用你的投票系統變得更加困難,那麼每次投票都需要一個新的IP。你必須根據具體情況來決定。 – Gattster 2010-01-09 03:28:47

相關問題