验证用户名时出现PHP错误

验证用户名时出现PHP错误,php,validation,debugging,Php,Validation,Debugging,我正在使用PHP构建一个网站,我需要验证用户输入的名称是否正确。由于JavaScript是客户端的,我不能完全依赖它,因此下面是我的服务器端函数,用于验证用户的名称: function validate_name($name) { $name = trim($name); // only for the purpose of debugging <---- edited comment echo $name; if (strlen($name) <= 1)

我正在使用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;
    }
}
输出:

Your first name cannot be empty
知道我做错了什么吗?在过去的一个小时里,我一直在试图解决这个问题,但我一直没有找到解决办法

Array
(
    [email] => ewf@gmail.com
    [first_name] => qwe
    [last_name] => wqe
    [password] => qwe
    [re_password] => qwe
    [gender] => Male
)
//名字长度=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
    }
}
函数验证\u名称($name){
$name=trim($name);
echo$name;
如果(strlen($name)使用

if (validate_name($_POST["first_name"]) == "small" && !validate_name($_POST["first_name"])) {
    echo "<span class='error'>Your first name cannot be empty</span>";
    return false;
} else if (validate_name($_POST["first_name"]) == "numbers" && validate_name($_POST["first_name"])) {
    echo "<span class='error'>Numbers are not allowed in your first name</span>";
    return false;
}

您的逻辑是正确的,但是,正如其他问题所指出的,带有布尔比较的字符串将返回true


要解决这个问题,您应该使用
==
而不是
=
,而且一切都应该很好

我建议在这里修改
validate\u name
函数,这样它将只有一个返回类型,因为它当前可以返回
字符串
布尔值
,这不是一个好的做法

例如,您可以执行以下操作:

function validate_name($name) {
    $name = trim($name);
    echo $name;
    if (strlen($name) <= 1) {
        return "small";
    } else if (has_numbers($name)) { 
        return "numbers";
    } else {
        return "ok"; // or return ""; or whatever string you want.
    }
}

我认为您只需要更改final_check()函数

功能最终检查(){
如果(验证名称($\u POST[“first\u name”])){
返回true;
}否则{
如果(验证名称($\u POST[“first\u name”])==“small”){
echo“您的名字不能为空”;
返回false;
}else if(验证名称($\u POST[“first\u name”])=“number”){
echo“您的名字中不允许有数字”;
返回false;
}
}
}

那么,
echo$name;
return@RenePot我把
echo$name
放在那里是为了调试。删除该部分后,错误仍然存在。我理解。只是想知道什么是回声
$\u POST
变量所回声的相同东西:
qwe
所以,要解决这个问题,
=
应该使用而不是
==
愚蠢!我太愚蠢了,该死!我已经习惯Python,忘记了三重相等,非常感谢,它成功了!:)
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;
}
if (validate_name($_POST["first_name"]) == "small" && !validate_name($_POST["first_name"])) {
    echo "<span class='error'>Your first name cannot be empty</span>";
    return false;
} else if (validate_name($_POST["first_name"]) == "numbers" && validate_name($_POST["first_name"])) {
    echo "<span class='error'>Numbers are not allowed in your first name</span>";
    return false;
}
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;
}
function validate_name($name) {
    $name = trim($name);
    echo $name;
    if (strlen($name) <= 1) {
        return "small";
    } else if (has_numbers($name)) { 
        return "numbers";
    } else {
        return "ok"; // or return ""; or whatever string you want.
    }
}
function final_check() {
    $valid = validate_name($_POST["first_name"]);
    if ($valid == "small") {
        echo "<span class='error'>Your first name cannot be empty</span>";
        return false;
    } else if ($valid == "numbers") {
        echo "<span class='error'>Numbers are not allowed in your first name</span>";
        return false;
    }
    return true;
}
function final_check() {
if(validate_name($_POST["first_name"])){
 return true;
}else{
    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;
    }
  }
}