验证用户名时出现PHP错误

Alw*_*ver 3 php debugging validation

我正在使用PHP构建一个网站,我需要验证用户输入的名称是否正确.由于JavaScript是客户端的,我不能完全依赖它,所以这是我的服务器端函数来验证用户名:

function validate_name($name) {
    $name = trim($name);  // only for the purpose of debugging <---- edited comment
    echo $name;
    if (strlen($name) <= 1) {
        return "small";
    } else if (has_numbers($name)) { 
        return "numbers";
    } else {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此之后,我相应地检查输入和显示结果:

function final_check() {
    if (validate_name($_POST["first_name"]) == "small") {
        echo "<span class='error'>Your first name cannot be empty</span>";
        return false;
    } else if (validate_name($_POST["first_name"]) == "numbers") {
        echo "<span class='error'>Numbers are not allowed in your first name</span>";
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

当我在first_name字段中输入任何内容时,我收到空错误消息; 当我输入数字时,我得到数字错误消息.但是,当我输入有效名称时,它会给我输入名称为空的错误消息.

这是帖子数据:

Array
(
    [email] => ewf@gmail.com
    [first_name] => qwe
    [last_name] => wqe
    [password] => qwe
    [re_password] => qwe
    [gender] => Male
)
Run Code Online (Sandbox Code Playgroud)

输出:

Your first name cannot be empty
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?在过去的一小时里,我一直在努力解决这个问题,但我一直无法找到解决方案.

Nai*_*ncy 6

Array
(
    [email] => ewf@gmail.com
    [first_name] => qwe
    [last_name] => wqe
    [password] => qwe
    [re_password] => qwe
    [gender] => Male
)
Run Code Online (Sandbox Code Playgroud)

// First_name长度= 3

function validate_name($name) {
    $name = trim($name);
    echo $name;
    if (strlen($name) <= 1) {
        return "small";
    } else if (has_numbers($name)) { 
        return "numbers";
    } else {
        return true;      // satisfy this case return true
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,它变得像

function final_check() {
    if (validate_name($_POST["first_name"]) == "small") {   // if(1 == 'small')
        echo "<span class='error'>Your first name cannot be empty</span>";
        return false;
    } else if (validate_name($_POST["first_name"]) == "numbers") {
        echo "<span class='error'>Numbers are not allowed in your first name</span>";
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

if(1 =='small')它与Boolean的字符串比较,它总是返回true.

请查看手册中的此页面以了解问题.

  • 所以,要解决这个问题,应该使用`===`而不是`==` (3认同)