2011-06-25 114 views
3

我有一個會員制的網站,並計劃實施推介系統。 我的網站是基於信用的,這個想法是,如果用戶X引用用戶Y,則用戶X獲得100個獎勵信用。推薦系統PHP

有誰建立轉診制度之前,如果是這樣,我應該記住什麼障礙?今晚我已經有了一個窺探,但找不到合適的答案。

我的理論是給每個用戶被生成並存儲在一個數據庫中的隨機字符串用戶註冊時,用戶將然後用URL含呈現。該字符串在傳遞給某個用戶(用戶Z)時,然後將用戶Z發送到一個頁面,然後該頁面使用GET方法收集隨機字符串並更新他們當前佔用的數據庫行,該聲音是否可行或是否可行容易被破壞?

感謝

回答

3

通常這被稱爲聯盟計劃。在描述中,你幾乎可以正確使用它,但是我還會將$ _GET var中的引用存儲到會話或cookie中,這樣即使用戶從引用頁面導航,也可以記入用戶。 通過這個我的意思是 - 通常只有當用戶Y註冊或購買東西時,聯盟計劃纔會對用戶X進行信用。因此,用戶Y可以訪問推薦頁面,然後環顧四周,然後找到返回註冊頁面或購買頁面的路。到那時,引用$ _GET var會丟失,信用也會丟失。因此,您的推介頁面會存儲推介代碼的會話或cookie,並且您的註冊頁面或結賬回調會檢查這些變量並採取相應措施。 我相信如果像他提到的那樣擔心斯科特的方法是好的,但是或者您可能希望轉診始終保持靜態,以供人們可能放在名片上的商業轉介等情況。他們在傳銷中做了很多事情,代表在中央公司網站上給予代理人簡介,所以他們不需要自己做。

我不知道你的意思是更新他們當前佔用的數據庫行。你是否建議像計數字段那樣保存代表總推介的數字?如果是這樣,我會說這不是一個好主意。您應該將每個成功的引薦記錄作爲其引用者ID作爲公用密鑰的關係表中的自己條目。這樣,您可以將各種發佈數據存儲在推介中,以便了解您是否被混淆。就像一個用戶創建1000個雅虎帳戶並註冊自己的推薦代碼,以獲得獎勵積分。你的關係表可能會看到重複的IP地址,或者推薦電子郵件是增量式的([email protected][email protected]等),然後你知道採取行動。

您的建議的安全性最終取決於您如何處理數據。如果你盲目地插入任何數據庫,那麼一切都是有害的。只要確保正確地逃避事情並留意行爲,即使是手動操作。你應該沒問題。

1

如果該值保持不變,它最肯定可以突破。我建議你不要給用戶一個散列(我們會說MD5來簡化它),並保持它們唯一的字符串。您可以創建一個臨時表,其中包含所有發送的請求的記錄,包括用戶的ID和當前時間的隨機散列(使用類似date()函數的內容)以及用戶的PRIMARY KEY值個別要求。所以轉介被在午夜發出的,您可以使用下面的命令

SELECT MD5(CONCAT(NOW(),user.id)) AS hash FROM user WHERE user.id = #

如果你每次都使用相同的散列,生成MySQL中的唯一的哈希只要有人發現,哈希,除非妥善要防範可能被利用比爲每個單獨的推薦使用不同的散列容易得多。

1

而不是隨機字符串,你可以使用用戶X的用戶名?
此外,隨機字符串,你可以在兩個用戶具有相同的隨機字符串的情況下獲得。或者,也許你正在使用兩者?

我不知道,我可以看到需要確保轉診,你有什麼害怕被濫用?使用多個帳戶獲得免費積分的用戶?他們可以用隨機字符串來做到這一點,如果你想防止這種情況發生,你應該設置一個cookie和/或檢查IP地址。

什麼危險,我們談論的,如果有人違反制度?只是免費的積分或者是人們通常爲這些積分付費?如果是這樣,用戶付費註冊?

如果用戶正在成爲其中一員,我看不出有任何理由限制推介?在用戶Y實際付款之前,不要獎勵用戶X。當用戶Y被稱爲設置cookie /會話,如果用戶Y在會話保持用戶X的用戶名,獲獎用戶X.

這是所有我可以和你貼個大氣壓的信息說登記。

+1

信用在網站上購買一次,所以我唯一的擔心是人爲了獲得更多的信用僞造賬戶,因此信用的價值大大降低,感謝您的答覆! – Liam