2015年7月

Discuz!3.2 邮箱32位限制的解除方法

Discuz! 是非常知名的论坛和门户建站平台。但是其对电子邮箱有32位的限制,任何超过32位的邮箱都会被判断为无效邮箱。但是,实际上现在会有一些邮箱会超过这一限制,因此本着对所有用户负责人的态度,解除这一限制就成了当务之急。

经过粗略的研究Discuz!的form有效性验证是form内容提交到网站后,后台(php语言部分)进行验证,再将结果通过Ajax(注册时采用)或者召唤相应页面(注册后手动修改邮箱时采用)的方式返回到网页前端。同时,通过对3.2版本的Discuz!数据库研究发现,其默认的邮箱字段长度位255为可变字符(varchar)。因此,只要我们修改后台相应的php验证模块,我们可以实现最长255位的邮箱支持。不过实际上很难有人注册这种邮箱,我们的目标是为正常人类服务,因此将邮箱长度设置为64位.下面是步骤,就两步:

  1. 修改注册流程的后台php验证代码:
    修改\discuz\source\function\function_core.php第370行函数「isemail」中最大长度32为64
  2. 修改手动修改邮箱流程的后台php验证代码:
    修改\discuz\source\function\function_member.php第285行函数「checkemail($email)」中「strlen($email) > 32」为「strlen($email) > 64」.