使用php注册时确认密码

时间:2018-04-28 23:41:06

标签: php sql regex preg-match md5

为我正在处理的项目创建注册页面。这是非常基本的,只需要用户输入用户名和密码,但我希望用户确认他们的密码。我正在使用:

$pattern = '/^[0-9]{6,}$/';

确保只能输入数字作为密码,且长度必须至少为6位。除了确认密码外,一切正常。我在下面附上了我的脚本。谁能看到我做错了什么?当我在register.html页面的密码框中输入两个不同的值时,它似乎只是接受并将值输入到数据库中。

    $username = $_POST['username']; //username
    $password = $_POST['password']; //password
    $confirmPass = $_POST['password2'];
    $error = array();
    $pattern = '/^[0-9]{6,}$/'; //pattern for password

if($_POST['register']){ //if register is clicked
    if(!preg_match($pattern, $password)){ //is password doesnt match...
        echo "Password must be at least 6 characters long and numerical characters only."; //error message
    }

$query = "SELECT * FROM users WHERE username = '$username'"; //calls exising profiles
$result = mysqli_query($conn, $query);
    if(mysqli_num_rows($result)>0){
        echo "You already have an account!"; //if username existsm error message displayed
    } else {

    }

if($password === $confirmPass){ //if two passwords do not match
    echo 'Passwords do not match!';
} else {
       if(preg_match($pattern, $password)){ //if passwords match
    $password = md5($confirmPass); //md5 encryption
    $query = "INSERT INTO users (username, password) VALUES ('$username', '$password')"; //inserts into the database
        echo'You are now a registered user!';
    if($conn->query($query) === TRUE){
    } else {
        echo"Error: " . $query / "<br>" . $conn->error;
    }
} 
}

}

1 个答案:

答案 0 :(得分:0)

if($password === $confirmPass){ //if two passwords do not match
    echo 'Passwords do not match!';
} else {

这是不正确的。您实际上正在检查他们是否匹配。

if($password != $confirmPass){ //if two passwords do not match
    echo 'Passwords do not match!';
} else {

这应解决问题。

相关问题