2010-05-17 90 views
2

我有一個具有基本社交功能的PHP/CodeIgniter網站,顯然包含一個「添加朋友」鏈接。點擊此鏈接時,AJAX調用將在後臺進行,該鏈接將與鏈接關聯的用戶添加爲登錄用戶的好友。此外,鏈接轉換成「刪除朋友」,它就像在錫上說的那樣,就像「添加朋友」一樣。避免「添加朋友」濫用的最佳做法

當點擊「添加朋友」時,添加爲朋友的用戶通過電子郵件通知他或她已添加爲朋友。這就是我的問題所在:我想避免用這些通知電子郵件向用戶發送垃圾郵件,如果登錄用戶不斷點擊添加/刪除/添加/刪除/等。

我的想法是設置一個添加歷史記錄表,記錄2個用戶ID和一個時間戳。如果(當前時間 - 時間戳)大於設定值,我只會發送電子郵件。每次用戶重新添加朋友時,我都會將時間戳更新爲當前時間,以便「擴展」垃圾郵件控制的可擴展性。通過這種方法,我還可以控制用戶是否想在給定的時間間隔內添加太多的朋友。

對於時間戳遠離給定值的記錄,此表將不時被清除。

這是我的想法,如果你有其他的或使用不同的方法,請分享。

感謝您的閱讀。

+0

難道你不在某處存儲好友信息嗎?如何添加一個屬性來告訴你友誼何時開始? – 2010-05-17 09:14:21

+0

當我刪除朋友時,我完全刪除了數據庫記錄,這就是爲什麼我更喜歡使用單獨的數據庫表來保留歷史記錄。好用戶名,順便說一句。 :) – janosrusiczki 2010-05-17 14:09:22

回答

3

聽起來像我最喜歡的選項。爲了簡化,如果記錄完全存在(而不是基於時間戳),我可能會發送電子郵件,然後設置一個cron系統地處理舊的 - 這樣,您可以有更多的控制權超過時間限制(您的「限制」邏輯會進入cron腳本,因此您可以根據比時間戳更復雜的參數決定是否刪除記錄 - 例如,如果特定用戶有大量的活動,以阻止垃圾郵件發送者,你甚至可以是用戶或帳戶類型特定的,但我確實有傾向於過度......)

據我所知,Facebook有"Add Friend" - >"Pending request"。從那裏開始,除非對方回覆,否則你無法做任何事情,所以你根本不能垃圾郵件請求,但我想這取決於你是否需要確認另一端,這取決於你自己的口味。

1

我認爲最好讓你的朋友選項成爲一種雙向的選擇。因此,第一個用戶邀請其他人成爲他/她的朋友(將「添加朋友」鏈接變成「受邀」等不是鏈接的內容)。另一個人則必須接受第一個用戶作爲朋友。之後,這兩個用戶可以刪除友誼,但在此之後,如果他們中的一個再次決定成爲朋友,他可以再次邀請另一個。你可以在這個邀請當然有某種有效期限,或者一些限制(例如,一個人只能邀請其他人三次)...

這樣你就不會用電子郵件發送用戶郵件(在最起碼是因爲有些人經常點擊一個鏈接),人們對他們的朋友有更多的控制權。當然,這種方法確實有一些缺點(比如如何處理被忽略的邀請等)。

你在你的問題中描述的方式我認爲也是一種打擊垃圾郵件的好方法,你也可以做一些事情,例如限制某人可以添加另一個用戶作爲朋友的次數(即每天一次,三次周,我不知道,類似的東西)..