注意:本帖子内容和代码已经过期,请查看最新版本Discuz!NT的用户整合说明文档。---雪人 2007-9-17==============================
ASP.net程序支持多种语言开发ASP.net程序, 无论选择C#,VB.net,J#, Managed C++,J#或Python来开发你的ASP.net网站的各个模块, 都可以做到方法级的互相调用
因此以下c#程序也可以用于vb.net开发的网站, 欢迎大家特别是已经成功整合的用户发帖讲述自己的经验
首先在你的程序中引用
- using Discuz.Common;
- using Discuz.Forum;
复制代码然后将指定的用户信息创建为一个用户
- // 用户名这里为tmpUsername
- // 判断用户名是否已被注册
- if (UserFactory.Exists(tmpUsername))
- {
- // 这里提示该用户名已经被使用
- // return;
- }
- else if (!Utils.IsSafeSqlString(tmpUsername))
- {
- // 提示用户名中存在非法字符
- return;
- }
- else if (tmpUsername.Trim() == PrivateMessageFactory.SystemUserName || ForumUtils.IsBanUsername(tmpUsername, config.Censoruser))
- {
- //提示用户名属于禁止名单, 或者与负责发送新用户注册欢迎信件的用户名称相同...
- return;
- }
- else if (ForumUtils.InBanWordArray(tmpUsername))
- {
- //提示用户名含有论坛禁止的词语, 请更换
- return;
- }
- if(UserFactory.FindUserEmail(email) != -1)
- {
- //提示email已经被其它用户注册使用
- return;
- }
- // 你也可以增加更多你自己的检测规则, 尽量保证用户信息的合法和安全......
复制代码判断完了信息就可以创建新用户了, 用户的信息很多, 但只给部分主要信息赋值就可以创建一个新用户, 属性与dnt_users表字段名基本一致
UserInfo类的属性涵盖了用户的信息 (所以, 开发者其实可以用.net的反射机制来得到UserInfo类的所有属性)
- UserInfo __userinfo = new UserInfo();
- __userinfo.Username = Utils.HtmlEncode(tmpUsername); //用户名
- __userinfo.Nickname = Utils.HtmlEncode(DNTRequest.GetString("nickname")); // 用户昵称
- __userinfo.Password = Utils.MD5(DNTRequest.GetString("password")); // 将密码明文进行md5加密
- __userinfo.Gender = DNTRequest.GetInt("gender", 0); //性别
- __userinfo.Adminid = 0;
- __userinfo.Groupexpiry = 0;
- __userinfo.Extgroupids = "";
- __userinfo.Regip = DNTRequest.GetIP(); //获得用户ip
- __userinfo.Joindate = Utils.GetDateTime();
- __userinfo.Lastip = DNTRequest.GetIP();
- __userinfo.Lastvisit = Utils.GetDateTime();
- __userinfo.Lastactivity = Utils.GetDateTime();
- __userinfo.Lastpost = Utils.GetDateTime();
- __userinfo.Lastpostid = 0;
- __userinfo.Lastposttitle = "";
- __userinfo.Posts = 0;
- __userinfo.Digestposts = 0;
- // 更多属性的值.........
复制代码给UserInfo类型的实例赋值后调用UserFactory.CreateUser方法创建用户, 返回值为int类型, 如果创建失败返回-1, 如果创建成功则返回用户的uid
- int uid = UserFactory.CreateUser(__userinfo);
复制代码相关的可能还需要查询制定用户的信息
如果只知道用户名, 那也可以凭用户名得到其uid, 如果存在该用户, 则返回uid, 如果不存在该用户, 则返回-1
- int uid = UserFactory.GetUserID("张三")
复制代码获得一个用户的信息:
- public static UserInfo GetUserInfo(int uid)
复制代码例如要获得uid为256的用户的信息就是:
- UserInfo __userinfo = UserFactory.GetUserInfo(256);
复制代码如果指定uid的用户存在, 则返回一个UserInfo描述类的实例, 否则返回null
如果事先得到了论坛cookie里的userid和password,可以用
- int userid = UserFactory.CheckPassword(userid, password, false)
复制代码方法,返回值为userid,如果验证失败,则返回-1
之前有asp.net网站站长整合本论坛的用户成功, 还有什么问题或经验大家可以互相交流