Discuz!NT

注册

 

QQ登录

只需一步,快速开始

发新话题 回复该主题

Discuz!NT的创建用户和用户登录验证的调用方法示例 [复制链接]

1#
注意:本帖子内容和代码已经过期,请查看最新版本Discuz!NT的用户整合说明文档。

---雪人 2007-9-17


==============================

ASP.net程序支持多种语言开发ASP.net程序, 无论选择C#,VB.net,J#, Managed C++,J#或Python来开发你的ASP.net网站的各个模块, 都可以做到方法级的互相调用
因此以下c#程序也可以用于vb.net开发的网站, 欢迎大家特别是已经成功整合的用户发帖讲述自己的经验


首先在你的程序中引用
  1. using Discuz.Common;

  2. using Discuz.Forum;

复制代码
然后将指定的用户信息创建为一个用户
  1. // 用户名这里为tmpUsername



  2. // 判断用户名是否已被注册

  3.    if (UserFactory.Exists(tmpUsername))  

  4.     {

  5.      // 这里提示该用户名已经被使用

  6.      // return;

  7.     }

  8.     else if (!Utils.IsSafeSqlString(tmpUsername))

  9.     {

  10.      // 提示用户名中存在非法字符

  11.      return;

  12.     }

  13.     else if (tmpUsername.Trim() ==  PrivateMessageFactory.SystemUserName || ForumUtils.IsBanUsername(tmpUsername, config.Censoruser))

  14.     {

  15.       //提示用户名属于禁止名单, 或者与负责发送新用户注册欢迎信件的用户名称相同...

  16.       return;

  17.     }

  18.     else if (ForumUtils.InBanWordArray(tmpUsername))

  19.     {

  20.       //提示用户名含有论坛禁止的词语, 请更换

  21.       return;

  22.     }

  23.     if(UserFactory.FindUserEmail(email) != -1)

  24.     {

  25.       //提示email已经被其它用户注册使用

  26.       return;

  27.     }



  28. // 你也可以增加更多你自己的检测规则, 尽量保证用户信息的合法和安全......

复制代码
判断完了信息就可以创建新用户了, 用户的信息很多, 但只给部分主要信息赋值就可以创建一个新用户, 属性与dnt_users表字段名基本一致
UserInfo类的属性涵盖了用户的信息 (所以, 开发者其实可以用.net的反射机制来得到UserInfo类的所有属性)
  1.      UserInfo __userinfo = new UserInfo();

  2.      __userinfo.Username     = Utils.HtmlEncode(tmpUsername); //用户名

  3.      __userinfo.Nickname     = Utils.HtmlEncode(DNTRequest.GetString("nickname")); // 用户昵称

  4.      __userinfo.Password     = Utils.MD5(DNTRequest.GetString("password")); // 将密码明文进行md5加密

  5.      __userinfo.Gender     = DNTRequest.GetInt("gender", 0); //性别

  6.      __userinfo.Adminid     = 0;

  7.      __userinfo.Groupexpiry    = 0;

  8.      __userinfo.Extgroupids    = "";

  9.      __userinfo.Regip     = DNTRequest.GetIP(); //获得用户ip

  10.      __userinfo.Joindate     = Utils.GetDateTime();

  11.      __userinfo.Lastip     = DNTRequest.GetIP();

  12.      __userinfo.Lastvisit    = Utils.GetDateTime();

  13.      __userinfo.Lastactivity    = Utils.GetDateTime();

  14.      __userinfo.Lastpost     = Utils.GetDateTime();

  15.      __userinfo.Lastpostid    = 0;

  16.      __userinfo.Lastposttitle   = "";

  17.      __userinfo.Posts     = 0;

  18.      __userinfo.Digestposts    = 0;

  19. // 更多属性的值.........

复制代码
给UserInfo类型的实例赋值后调用UserFactory.CreateUser方法创建用户, 返回值为int类型, 如果创建失败返回-1, 如果创建成功则返回用户的uid
  1. int uid = UserFactory.CreateUser(__userinfo);

复制代码
相关的可能还需要查询制定用户的信息

如果只知道用户名, 那也可以凭用户名得到其uid, 如果存在该用户, 则返回uid, 如果不存在该用户, 则返回-1
  1. int uid = UserFactory.GetUserID("张三")

复制代码
获得一个用户的信息:
  1. public static UserInfo GetUserInfo(int uid)

复制代码
例如要获得uid为256的用户的信息就是:
  1. UserInfo __userinfo = UserFactory.GetUserInfo(256);

复制代码
如果指定uid的用户存在, 则返回一个UserInfo描述类的实例, 否则返回null


如果事先得到了论坛cookie里的userid和password,可以用
  1. int userid = UserFactory.CheckPassword(userid, password, false)

复制代码
方法,返回值为userid,如果验证失败,则返回-1



之前有asp.net网站站长整合本论坛的用户成功, 还有什么问题或经验大家可以互相交流
最后编辑雪人 最后编辑于 2007-09-17 21:24:29
分享 转发
常见问题请先参看各版块置顶贴, 或参阅文档中心相关内容:  点击查看
提问问题请尽量在标题中说明大概
欢迎提意见建议
为了不耽误您的问题尽快解决,请勿发送短消息
TOP
2#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

支持!希望整合成功的朋友分享一下整合经验。
TOP
3#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

早整合好了~自己写几个文件就行了
TOP
4#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

首页调用出来了吗?
TOP
5#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

不错,不过有数据库结构和字段说明调用起来就会更灵活。。。。。/
TOP
6#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

哈哈 等你开发CMS呢
TOP
7#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

原来整合好了,后来一直没敢用,怕正式版后接口会调整,并且原来的版本升级也遇到了些困难,不知道rc1后还有几个版本,能否顺利升级到正式版。
TOP
8#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

谢谢提供啊
完美支持discuz!NT 双线空间 www.lulin-idc.com
TOP
9#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

支持一下,我菜鸟,恐怕是搞不来了。

就是想要NT版的supesite/X-space
热切期盼 Discuz!NT 超越 Discuz! 的那一天!
当前版本:Discuz!6.1UC+SS+UCH
TOP
10#

回复:Discuz!NT的创建用户和用户登录验证的调用方法示例

好东西!绝对有用!支持!存下来对照着搞!
TOP
发新话题 回复该主题
站长