0

您好,我有一个函数可以检查我的注册详细信息是否在数据库中不匹配,如果匹配,则返回代码。

但是每次我返回代码时,我的 HTML 都不会加载,因为它会阻止它加载。由于某些特定原因,我希望 HTML 始终位于 PHP 代码下(我希望错误显示在表单上,​​而不是在下)。

这是我的功能的一个例子:

function check_available($name, $password, $email)
{
    global $pdo;

    $check_user = $pdo->prepare("SELECT * FROM users WHERE user_name = :username LIMIT 1");
    $check_user->execute( array(':username' => $name) );        

    $check_email = $pdo->prepare("SELECT * FROM users WHERE user_email = :email LIMIT 1");
    $check_email->execute( array(':email' => $email) ); 

    $error = '';
    if ($check_user->rowCount())
    {
        $error .= 'Username already exists!';
        return handle_errors($error);
    }
    else if($check_email->rowCount() && !$check_user->rowCount())
    {
        $error .= 'Email already exists!';
        return handle_errors($error);
    }
    else
    {
        return true;
    }
}

    if (isset($_POST['submit']))
    {
        $check_in = check_available($name, $password, $email);


        if ($check_in == true)
        {
            echo 'Created account sucessfully!';
        }
    }
?>  
<html>
<form action="register.php" method="POST">
Username: <input type="text" name="username"><br />
Password: <input type="password" name="password"><br />
Email: <input type="text" name="email"><br />
<input type="submit" name="submit">
</form>
</html> 

提交后,(用户名已在数据库中匹配),HTML 将隐藏并显示错误。

我该如何防止这种情况?有什么诀窍吗?

4

1 回答 1

3

隐藏表单是没有意义的。
恰恰相反,必须显示表单才能让用户输入另一个名称。

因此,只需将错误输出添加到您的表单 - 这就是您所需要的

编辑
看起来应该归咎于 handle_errors() 函数。

function reg_has_errors($name, $password, $email)
{
    global $pdo;

    $error = '';

    $sql = "SELECT 1 FROM users WHERE user_name = ? LIMIT 1";
    $stm = $pdo->prepare($sql);
    $stm->execute( array($name) );        
    if($stm->rowCount())
    {
        $error .= 'Username already exists!';
    }

    $sql = "SELECT * FROM users WHERE user_email = ? LIMIT 1";
    $stm = $pdo->prepare($sql);
    $stm->execute( array($email) );        
    if($stm->rowCount())
    {
        $error .= 'Email already exists!';
    }
    return $error;
}

$errors = '';
if (isset($_POST['submit']))
{
    $errors = reg_has_errors($name, $password, $email);

    if (!$errors)
    {
        echo 'Created account sucessfully!';
    }
}
echo errors;
于 2013-04-18T13:03:30.367 回答