C#,asp.net實現邀請碼機制

現在很多網站有一個邀請碼機制,比如開源社區,一方面可以防止灌水,另一方面大家都是互相介紹加入網站,提升網站用戶層次。維護一個良好的社區環境。本文章就介紹實現邀請碼機制。提供C#源代碼。

邀請碼組成:1-20080330134035-a21f34a965d1cb65 第一位是:用戶編號,第二位是年月日時分秒,第三位是校驗碼。

校驗碼算法爲:用戶編號+年月日時分秒+私鑰,取16位md5值。

代碼:

string t = DateTime.Now.ToString("yyyyMMddHHmmss");
string k = BLL.StringUtil.md5(User.Identity.Name + t + "b497570b-69a2-4bd1-9380-7e74616795ab", 16);
txt.Text
= string.Format("{0}-{1}-{2}", User.Identity.Name, t, k);
 
加私鑰的目的就是爲了防止別人知道你的算法後,寫註冊機(當然了,也要看網站的重要程度,
這樣就計算出邀請碼了。
 
下面是驗證邀請碼有效性:
aspx中:
<asp:TextBox ID="txtCode" runat="server" Rows="10"></asp:TextBox><asp:RequiredFieldValidator ID="r6" runat="server" ControlToValidate="txtCode" Display="Dynamic" ErrorMessage="請填寫邀請碼" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtCode"
Display
="Dynamic" ErrorMessage="邀請碼格式錯誤" SetFocusOnError="True" ValidationExpression="/d+-/d{14}-[/da-f]{16}"></asp:RegularExpressionValidator>
後臺CS文件:
string[] tmp = txtCode.Text.Split('-');
BLL.StringUtil.md5(tmp[
0]+tmp[1]+"b497570b-69a2-4bd1-9380-7e74616795ab", 16)==tmp[2]

就驗證了邀請碼的合法性。然後還要把用過的邀請碼記錄到數據庫,下次有新的邀請碼來驗證的時候,去數據庫裏比較一下,存在的話,表示是用過的邀請碼,已經失效了。

發佈了22 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章