注意:本帖子内容和代码已经过期,请查看最新版本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网站站长整合本论坛的用户成功, 还有什么问题或经验大家可以互相交流