POST变量的验证返回不正确的值


Validation of POST vars returns incorrect values

我是一名新程序员,我尝试了很多不同的方法来验证我的代码,但显然我做得完全错误。如有任何帮助,我们将不胜感激。我仍在验证这个名字。这个版本显然没有意义,但我无论如何都无法让它发挥作用。

  <?php
require_once ('includes/classes/database.php');
require_once('includes/classes/user.php');
require_once('includes/header.php');

// if user submits a new registration
if (isset($_POST['name'],$_POST['email'],$_POST['pwd'],$_POST['pwd2']))
{
    if(strlen(trim($_POST['name'])) <= 20)
    { 
        return (true);
        return $name;
    }
    else
    {
        return (false);
    }
    // validate input fields
    //$name = $_POST['name'];
    $email = $_POST['email'];
    $password = $_POST['pwd'];
    $password2 = $_POST['pwd2'];
    // if error fall through and redisplay page with errors
    // if no errors update database and redirect to homepage
    if ($uc->add_member($name, $email, $password) === FALSE)
    {
        echo "System Error. damn if I know what to do";
    } 
    else
    {
        header("location: homepage.php");
    }
}
?>
if(strlen(trim($_POST['name'])) <= 20)
    { 
        return (true);
        return $name;
    }
    else
    {
        return (false);
    }

一旦函数命中return语句,PHP就会结束该函数。这将使其返回TRUEFALSE,具体取决于名称的长度。在此之后,程序的其余部分将不会运行。

此外,不能有两个这样的返回语句。

return (true);
return $name;

将返回TRUE,而return $name将不会运行。

if (strlen(trim($_POST['name']))<=20)
{ 
    return (true);    }
else
{
    return (false);
}

只要把退货名称写出来就行了。然后它就会起作用。

这是一个奇怪的代码。

正如其他人指出的那样,双重回报的做法行不通。

此外,===false部分是可疑的,您是否检查它的评估结果是false,或者实际上是false,===可能太多了,===很可能会完成任务。您还没有发布任何来自该类的代码,以便我们检查===在这种情况下是否正常。

对它进行一些更改,并尝试发布关于实际问题的实际问题,而不是"这不太正确,你能调试整个脚本吗?"。