Discuz! X2论坛注册出现“抱歉,您输入的用户名小于3个字符”的解决方法

这个问题出现的原因是弹出式的注册窗口,在Discuz! X1不存在此问题,没有去检查为什么。这里说说在X2中怎么改。

1.打开“根目录/template/default/member/register.htm”这个文件。

2.在文件中搜索“id=”{$this->setting['reginput']”,会找到四个地方,分别是:
1)<td><input type=”text” id=”{$this->setting['reginput']['username']}” name=”" …
2)<td><input type=”password” id=”{$this->setting['reginput']['password']}” name=”" …
3)<td><input type=”password” id=”{$this->setting['reginput']['password2']}” name=”" …
4)<td><input type=”text” id=”{$this->setting['reginput']['email']}” name=”" …
将四处id的值(如{$this->setting['reginput']['username']})分别拷贝给对应的name。

3.这四处input中,name都是”",所以在填写完注册信息后,submit到后台去时,后台通过name去拿填写的数据会拿不到任何东西。而注册前的验证会检查注册信息是否完备,第一个input是username,当它检查到输入内容为空时,当然会提示“抱歉,您输入的用户名小于3个字符”。

4.这四处应该都要改,如果只是改提示的“用户名”,其他不动,猜测会有“密码为空或者包含非法字符”之类的提示,有兴趣的朋友可以试一下。

5.我注册第一个用户时没有出错,在修改了后台某些配置后才出现这个问题,有网友说在原来的register.js中会将input空间的name设置成和id一样的值,但现在不起作用了,这个问题就产生了。

PHP的注释

写代码加注释的重要性不必重复了,既是方便自己以后看代码,也是为了他人维护的方便。

PHP主要有两种注释,一种是单行注释,一种是多行注释。

PHP 单行注释语法

在一行中所有//符号右面的文本都被视为注释, 因为 PHP 解析器忽略该行 //右面的所有内容。示例如下:

<?php
echo "slowlau.com"; //这是单行注释
?>

也这样写,一行只有注释,不写代码:

<?php
// 这是单行注释
echo "slowlau.com";
// 这是单行注释
?>

单行注释还可能以#打头:

<?php
# 这也是单行注释
echo "slowlau.com";
# 这也是单行注释
?>

PHP 多行注释语法

PHP 多行注释以/*开头,以*/结束。在/*和*/之间,可以写多行注释。

<?php
echo "slowlau.com";
/*
这是多行注释
这是多行注释
*/
?>

要注意的是,不能在多行注释里边嵌套多行注释,因为最后一个多行注释的结束符会结束掉所有的注释,导致之前的多行注释的结束符变成了正常字符而不是注释字符,因而出错。既,不能如下边所示写注释:

<?php
  /*
  echo "这是错误的示范。\n"; /* 多行注释内加多行注释会引起问题 */
  */
?>