基本的PHP其他如果不工作

时间:2015-04-29 14:05:13

标签: php sql

我对用户注册表单进行了一些php验证。它正在验证所有输入,如果所有输入都是正确的,则检查该用户名是否正在使用,如果没有,则在数据库中创建该记录。由于某种原因,最后一个不会被激活,只是刷新所有数据仍然在输入框中。我无法在任何地方找到问题!!

pets/new.html.erb

1 个答案:

答案 0 :(得分:2)

首先要评论的是这个脚本拥有的令人难以置信的嵌套逻辑数量;如果/ else分支失控,那么在流量控制失败的情况下失去对流量的控制并不罕见。

重组示例

if (isset($_POST['user']))
{
    // Prep
    $error = '';

    // Sanitize
    foreach( $_POST as $varName => $value )
    {
        // Doing this for minification on Stackoverflow
        $$varName = sanitiseString($_POST[$varName]);

        // Validate
        if ( empty($$varname) )
            $error .= "Not all fields were entered<br /><br />";
    }

    // Valid Email?
    if ( !filter_var($email, FILTER_VALIDATE_EMAIL) )
        $error .= "Email format invalid<br /><br />";

    // Validate date
    $dateArray = explode('-', $dateOfBirth);
    if (!checkdate($dateArray[0], $dateArray[1], $dateArray[2]))
    {
        $error .= "Enter a date in the format: MM-DD-YYYY</br></br>";
    }

    $result = querySQL("SELECT * FROM members WHERE user='$user'");
    if ($result->num_rows)
    {
        $error .= "That Username already exists</br></br>";
    }

    if ( !empty($error) )
        die($error);

    querySQL("INSERT INTO members VALUES('','$firstname','$surname','$user','$pass','$email','$dateOfBirth','$gender')");
    die("<h4>Account Created</h4>Please Log In.</br></br>");
}

其他一些注意事项与您的count($test_arr) == 3count($test_arr) <> 3存在冲突。 $result->num_rows的值可能不是0,正如您所期望的那样。