您的位置:首页 > 编程语言 > ASP

asp.net(c#)实现邀请码机制

2009-06-03 17:23 337 查看
现在很多网站有一个邀请码机制,比如开源社区,一方面可以防止灌水,另一方面大家都是互相介绍加入网站,提升网站用户层次。维护一个良好的社区环境。本文章就介绍实现邀请码机制。提供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]


然后还要把用过的邀请码记录到数据库,下次有新的邀请码来验证的时候,去数据库里比较一下,存在的话,表示是用过的邀请码,已经失效了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: