注册用户验证

问题描述 投票:0回答:1

以下代码允许用户注册我的网站。他们必须输入用户名,密码和电子邮件。我已经包含了我的所有PHP代码,您可以更好地理解,基本上,它只是验证用户输入的内容,如果用户输入有效的详细信息,它将存储在数据库中。我将包含目前无效的代码。谢谢,我也是PHP新手。

<?php

    include('classes/DB.php');

    //function to abstract information entered and then store it
    if (isset($_POST['createaccount'])) 
    {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $email = $_POST['email'];

            if (!DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$username)))  // Username Validation (Duplicate)
                {
                    if (strlen($username) >= 3 && strlen($username) <= 32)//Length of Username Validation
                     {
                            if (preg_match('/[a-zA-Z0-9_]+/', $username)) // Username - Validation = Allow the Username to include a-z , A-Z , 0-9
                            {
                                    if (strlen($password) >= 6 && strlen($password) <= 60) //Length of Password Validation
                                    {

                                    if (filter_var($email, FILTER_VALIDATE_EMAIL))  // Email Validation (Duplicate)
                                    {
                                            DB::query('INSERT INTO users VALUES (\'\', :username, :password, :email)', array(':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email)); // Encrypts password 

                                            echo "Success!";
                                    } 

                                    else
                                    {
                                      echo 'Invalid email!'; //Error message  -  Email Duplicate
                                    }

                            }

                             else 
                             {
                               echo 'Invalid password!'; //Error message - Length of Password
                             }

                           } 

                            else
                            {
                              echo 'Invalid username1'; //Error message -  Username 
                            }

                    } 

                    else
                    {
                     echo 'Invalid username';  // Error message - Username
                    }

                 } 

            else 
            {
                    echo 'User already exists!'; //Error message - Duplicate Username
            }
    }

    ?>

我遇到这些代码行的问题,好像我在网站中输入相同的用户名,它仍然将它添加到数据库中,它不应该。

if (!DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$username)))  // Username Validation (Duplicate)

此外,当用户进入文本框时,应对其进行哈希处理

DB::query('INSERT INTO users VALUES (\'\', :username, :password, :email)', array(':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email)); // Encrypts password
php html database
1个回答
0
投票

要检查用户是否已存在用户名,请使用以下命令:

<?php
   $user = DB::query('SELECT username FROM users WHERE username=:username',
                    array(':username'=>$username));
   if(!empty($user->fetch()))
    {
      //Instruction 
    }
 ?>

当然,确保不重复用户名的最佳方法是在DBMS之后添加唯一约束

© www.soinside.com 2019 - 2024. All rights reserved.