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

时间:2011-08-24 15:29:25

标签: php

我是一名新程序员,我尝试了一些不同的方法来验证我的代码,显然我做错了。任何帮助,将不胜感激。我还在努力验证这个名字。这个版本显然没有意义,但我无法以任何方式让它工作。

  <?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");
    }
}

?>

3 个答案:

答案 0 :(得分:3)

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

PHP在命中return语句后结束该函数。这将使其返回TRUEFALSE,具体取决于名称的长度。此后的其余程序将无法运行。

另外,你不能有这样的2个返回语句。

return (true);
return $name;

返回TRUEreturn $name将无法运行。

答案 1 :(得分:1)

这是一个奇怪的代码。

正如其他人所指出的那样,双重回报将无效。

此外,=== false部分是可疑的,如果你检查它是否为false,或者实际上是假的,===可能太多,==可能会完成这项工作。您没有发布该类的任何代码,以便我们检查在这种情况下===是否正常。

对其进行一些更改,并尝试发布有关实际问题的实际问题,而不是“这不太正确,您可以调试整个脚本吗?”。

答案 2 :(得分:1)

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

只需获取返回名称即可。然后它会工作。