2012-05-11 20 views
1

我想創建一個基於文章的網站使用codeigniter。當要求從數據庫中提取任何文章以供查看時,我使用以下代碼在稱爲「點擊」的單獨表格中標記每篇文章的獨特視圖的數量。什麼是最有效的方法來保持uniqie文章視圖的數量

mysql_query("INSERT INTO hits(ip,article_slug,hitcount) 
      VALUES('$ip_address','$id',1) 
      ON DUPLICATE KEY UPDATE hitcount=hitcount+0"); 

我取用戶的IP地址,從$ this-> uri-> segment(3)獲取article_slug的值; 然後運行上面的mysql查詢。

我在此處使用IP地址來獲取唯一視圖的數量,但突然想到幾個人可能會使用相同的IP地址。所以在這種情況下,我上面的查詢似乎並不有效。

所以我想知道什麼是最有效的方法來做到這一點。我的一位朋友正在談論使用Cookie而不是IP地址來做這件事。你認爲它是一個好主意還是有更好的方法呢?

您能否給我一個關於如何做到這一點的想法?

感謝提前:)

+0

餅乾不會給你一個明確的計數,因爲它們總是可以被清除,然後你會重新計算同一臺機器。 – gorelative

+0

我不認爲這是可能的,你想要的水平。我有一個動態IP。如果我查看網站,它會增加點擊次數,但我是同一個人。或者可以共享ip。意味着你的命中次數會少於它應該是的。 – itachi

+0

我不認爲有一個簡單的方法來做到這一點。您不能依靠IP地址或Cookie來可靠地識別個人。如果您讓用戶註冊然後登錄,然後才能看到每個頁面,然後跟蹤這些點擊,但您可能會得到稍微更準確的結果,但是設置這些內容需要做大量的工作;強迫人們登錄閱讀文章會將人們從您的網站上關閉;而且無法保證某人只有一個帳戶。也就是說,如果你準備接受一些不確定性,我會推薦cookie方法。 – andrewsi

回答

0

我會建議使用谷歌分析和設置自定義報告只跟蹤文章的觀點。這會給你提供更多的見解,並且避免計算機器人(例如Google,Bing或SPAMer)。

但是,如果你反對自己想跟蹤用戶,我會建議跟蹤一個字段中的IP地址和另一個字段中的會話ID。

session_start(); 

$user['ip'] = $_SERVER['REMOTE_ADDR']; 
$user['sid'] = session_id(); 
+0

這樣做的好處是:減少很多和Apache的負載。 –

+0

@ user1390126非常感謝您的回覆。但是,如果我使用谷歌分析,我將能夠顯示在我的網站文章旁邊的文章瀏覽次數? –

+0

但是,如果您使用SESSION,當用戶關閉瀏覽器時不會重新設置它嗎? – andrewsi

0

背後使用的cookie的原因是,如果一些組的用戶背後的代理,你會得到相同的IP地址爲誰看了你的文章是錯的所有用戶。

所以你可以使用兩者的組合,這樣你可以得到更好的結果。您可以使用cookie或會話。但是,如果你使用cookie,並給它一個約一年或更長的期限,並且你指定了一些獨特的散列到cookie(這可能是日誌表的主鍵md5),然後你可以很好地跟蹤用戶。

讓我知道你是否明白我的意思。

+0

感謝您的回覆。我試圖把握你想要表達的意思,但我失敗了。你能請一些代碼示例來解釋一下嗎?(這樣對我來說會更容易)謝謝你:) –

+0

我也有問題。爲什麼我應該設置大約一年或更長的期限?請解釋這一點。謝謝 –

+0

當然,只要用戶手動清除所有Cookie,或者在指定的時間段過了一段時間(您可能需要一年或20年)後,您在Cookie上設置Cookie將存在於訪客瀏覽器中的過期時間。但一年或兩年可能是實用的,因爲人們在2/4年內更換瀏覽器或筆記本電腦/電腦。 :-) – Dharmavir

相關問題