discuz! 6.0 用email地址或用户名和密码登陆论坛

  • 九月 28th, 2007

在我心目中,没有什么论坛能与vbb媲美了,但这不能决定我们论坛就必须要用vbb。与vbb相比,discuz论坛还是很有本地特色的,它们的关系就如google与baidu,各有出色之处。我一直关注vbb,因为它的强大,代码结构紧促,但并不高效。discuz解决了这个问题,代码依然强大,利用缓存大大提升了论坛性能。加之discuz开发团队在国内的专注与论坛本身的流行,国内的应用几乎可以完全用discuz取代vbb了。

这几天调试discuz,遇到一个问题。用email和密码登陆,而不是uid或用户名。在discuz官方搜了半天,也没发现解决方案,只好自己动手。仔细研究发现uid其实是一个多余的东西,完全没必要存在于表现层,只不过后台验证密码全部统一到uid上而已。我敢断定,discuz在不久的将来肯定会取消uid的登陆方式,要么不用,要么换成email登陆。废话少说,开始说标题提出问题的解决办法。

discuz!6现有的是用户名登陆,查看discuz的代码后发现,全部登陆都归结于uid的登陆。这样的话我们同样可以用email来检测数据库,以此作为用户名的补充。这时候可能出现email与用户名重复的可能,仔细查看源代码分析就能清楚,其实这无关紧要。例如用户名如果是email地址:a@b.com,email地址也是用户名所用的email:a@b.com,这样登陆的时候无论是用哪一个(用户名还是email)都是一个地址,登陆正常。如果用户名是email地址:aa@bb.com,而注册填的email为另外一个email如:aaa@bbb.com,这样登陆的时候无论用哪个地址登陆都返回正常。其实说白了,这只是一个视觉感受问题,与后台验证没什么关系;我们可能不愿意带有@或点的用户名,如果实在不爽,干脆去修改过滤代码去掉这两个东西就ok了。

言归正传,修改方法:打开根目录下logging.php,约在107行代码为:
把代码:WHERE m.$field=’$username’ ");
修改为:WHERE m.$field=’$username’ or m.email=’$username’");

修改完即可,不用其他多余操作。当然,登陆界面可以在用户名旁边加个用email也可以登陆的提示。

ok,但愿这个小动作能为你的论坛的用户增加一些新体验。

6 引用 to “discuz! 6.0 用email地址或用户名和密码登陆论坛”

  1. Gravatar Icon ppp 回复说:

    好,学习了,我们的网站已经参照更改了

  2. Gravatar Icon bob 回复说:

    mNYX1N hi great site thanks http://peace.com

  3. Gravatar Icon mengxianglixiang 回复说:

    very好

  4. Gravatar Icon mengxianglixiang 回复说:

    好好好好好好好好你好好好好

  5. Gravatar Icon tube8 回复说:

    interesting post thx joy tube8 see you

  6. Gravatar Icon 网友 回复说:

    我好像来过你的博客了。不过既然来了。给你留点东西吧 (*^__^*) 嘻嘻……

给我回复