Php 检查是否正在使用用户名

Php 检查是否正在使用用户名,php,mysql,login,Php,Mysql,Login,我想知道是否以及如何检查是否正在使用用户名 我听说你可以用jQuery来实现这一点,但我只是想要一些简单的东西,因为我是初学者 我已经试过了,但我无法把它做好。我只是将其连接到mysql数据库,但由于当一个用户名与另一个帐户的密码相同时尝试登录,因此出现了一个问题,因此我需要使用此功能来阻止人们添加多个用户名 下面是我的注册表单和php的简单代码 姓名: 用户名: 电邮: 密码: 对于初学者来说,您不想仅仅依靠unique field之类的东西来实现这一点,当然,您希望在数据库中的用

我想知道是否以及如何检查是否正在使用用户名

我听说你可以用jQuery来实现这一点,但我只是想要一些简单的东西,因为我是初学者

我已经试过了,但我无法把它做好。我只是将其连接到mysql数据库,但由于当一个用户名与另一个帐户的密码相同时尝试登录,因此出现了一个问题,因此我需要使用此功能来阻止人们添加多个用户名

下面是我的注册表单和php的简单代码


姓名:

用户名:

电邮:

密码:


对于初学者来说,您不想仅仅依靠unique field之类的东西来实现这一点,当然,您希望在数据库中的用户名列中添加该属性,但在上面,您希望在其上方有某种正面保护,而不是依赖于数据库在插入时抛出错误,您还需要将mysqli用于所有这些,而不是旧版本mysql。它很容易被利用,不再是常见的做法,以下是您的每个文件的外观:

connect.php


register.php


用户名:

密码:
姓名:
电邮地址:

下面是另一个例子:),成功

<?php

    //Set empty variables.
    $usernameError = $emailError = $passwordError = $nameError = $okmsg = "";
    $username = $password = $email = $name = "";

    if (isset($_POST['submit'])) {

        //Check if empty labels form
        if (empty($_POST['name'])) {
            $userError = "The 'name' is required.";
            echo '<script>window.location="#registrer"</script>';
        } else { $name = $_POST['name']; }

        if (empty($_POST['email'])) {
            $emailError = "El 'Email' es requerido.";
            echo '<script>window.location="#registrer"</script>';
        } else { 
            $email = $_POST['email'];
            //Check only contain letters and whitespace.
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $emailError = "El 'Email' is not valid. ";
                echo '<script>window.location="#registrer"</script>';
            }
        }                           

        if (empty($_POST['password'])) {
            $passwordError = "The 'password' is requiered.";
            echo '<script>window.location="#registrer"</script>';
        } else { 
            $password = $_POST['password']; 
        }

    }
        //Check if correctly filled
        if ($name && $username && $email && $password) {

            require('connect.php');

            //Query SQL
            $sql = "SELECT * FROM user WHERE username='$username'"; //String SQL
            $query = mysqli_query($ConDB, $sql);//Query
            //Securite
            $username = mysqli_real_escape_string($ConDB, $username);
            $password = mysqli_real_escape_string($ConDB, $username);
            $passw = sha1($password);//For securite.
            $name = mysqli_real_escape_string($ConDB, $username);
            $email = mysqli_real_escape_string($ConDB, $username);

            if ($existe = mysqli_fetch_object($query)) {

                $usernameError = "The 'Username' is already exists.";
                echo '<script>window.location="#registrer"</script>';

            } else {

                $sql = "INSERT INTO user (username, password, email, name) VALUES ('$username', '$passw', '$email', '$name')";

                mysqli_query($ConDB, $sql);


                $okmsg = "Register with succes.";

                mysqli_close($ConDB);//Close conexion.

                echo '<script>window.location="#registrer"</script>';
            }



        }

?>

<a name="registrer"></a>

<form action="" method="POST">

    <p><label>name&nbsp;&nbsp; : </label>
     <input id="password" type="text" name="name" placeholder="name" /></p>
     <?php echo $nameError; ?>

    <p><label>User Name : </label>
    <input id="username" type="text" name="username" placeholder="username" /></p>
    <?php echo $usernameError; ?>

    <p><label>E-Mail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : </label>
     <input id="password" type="email" name="email"/></p>
     <?php echo $emailError; ?>

     <p><label>Password&nbsp;&nbsp; : </label>
     <input id="password" type="password" name="password" placeholder="password" /></p>
     <?php echo $passwordError; ?>


    <a class="btn" href="login.php">Login</a>
    <input class="btn register" type="submit" name="submit" value="Register" />
    <?php echo $okmsg; ?>
</form>

您可以尝试使用jqueryajax来满足您的需求

首先,将其添加到您的registration.php文件中

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
    // when user submit the form
    $('form').on('submit', function(event){
        $.ajax({
            url: "check_username.php",
            type: "POST",
            dataType: "JSON",
            data: {
                username: $("#username").val() // get the value from username textbox
            },
            success: function(data){
                if(data.status == "exists"){
                    alert('Username already existed');
                }
                else{
                    $('form').submit();
                }
            },
        });
        event.preventDefault();
    });
</script>

//当用户提交表单时
$('form')。在('submit',函数(事件){
$.ajax({
url:“check_username.php”,
类型:“POST”,
数据类型:“JSON”,
数据:{
用户名:$(“#用户名”).val()//从用户名文本框获取值
},
成功:功能(数据){
如果(data.status==“存在”){
警报(“用户名已存在”);
}
否则{
$('form').submit();
}
},
});
event.preventDefault();
});

现在您的registration.php文件将如下所示

registration.php



姓名:

用户名:

电邮:

密码:

//当用户在“用户名”文本框中键入时 $('form')。在('submit',函数(事件){ $.ajax({ url:“check_username.php”, 类型:“POST”, 数据类型:“JSON”, 数据:{ 用户名:$(“#用户名”).val()//从用户名文本框获取值 }, 成功:功能(数据){ 如果(data.status==“存在”){ 警报(“用户名已存在”); } 否则{ $('form').submit(); } }, }); event.preventDefault(); });

然后创建名为check_username.php的php文件,检查用户提交的用户名是否已存在于数据库中或仍然可用

检查_username.php



下面是它的工作原理:
1.当用户单击register按钮时,jQuery将调用check\u username.php

2.现在在check_username.php中,它将检查数据库中提交的用户名是否已经存在或仍然可用。

3.无论结果是否存在或可用,check_username.php都会将结果发送回registration.php,因为字符串包含“exists”或“available”。


4. registration.php现在获取结果,并将检查由check_username.php发送的结果,如果它包含“exists”或“available”。如果字符串为“存在”,则会触发警报。如果字符串为“可用”,则将提交表单。

您可以执行以下操作。首先将
用户名设为表中的唯一字段
,然后在插入前检查用户名是否已存在于表中,或者是否未使用
选择
查询。谢谢@Anant,但我需要它以消息的形式告诉我用户名正在使用中,以便您以后能告诉他吗checking@Anant这是正确的数字和文字更正,格式化文本
<?php       
    // Stop header errors
    ob_start();
    // Check if form has been posted
    if (isset($_POST['username'])){
        // Requre database connection file
        require('connect.php');
        // Clean the variables preventing SQL Injection attack
        $username = mysqli_real_escape_string($conn, $_POST['username']);
        $email = mysqli_real_escape_string($conn, $_POST['email']);
        $password = mysqli_real_escape_string($conn, $_POST['password']);
        $name = mysqli_real_escape_string($conn, $_POST['name']);
        // Check if the username exists
        // Construct SELECT query to do this
        $sql = "SELECT id FROM user WHERE username = '".$username."';";
        $result = mysqli_query($conn, $sql);
        $rowsreturned = mysqli_num_rows($result);
        // If the username already exists
        if ($rowsreturned != 0) {
            echo "Username exists, redirecting to register.php with an error GET variable!";
            // Redirect user
            header('Location: register.php?error=usernametaken');
        } else {
            // Construct the INSERT INTO query
            $sql = "INSERT INTO user (username, password, email, name) VALUES ('".$username."', '".$password."', '".$email."', '".$username."');";
            $result = mysqli_query($conn, $sql);
            if($result){
                // User was inserted
                echo "User inserted!";
                /* DO WHATEVER YOU WANT TO DO HERE */
            } else {
                // There was an error inserting
                echo "Error inserting, redirecting to register.php with an error GET variable!";
                // Redirect user
                header('Location: register.php?error=inserterror');
            }
        }
    }
?>
if (isset($_POST['username']) && isset($_POST['password'])){
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    $name = $_POST['name'];

    $query = "select username from user where username = '$username'";
    $res = mysql_query($query);
    $rows = mysqli_num_rows($res);
    if ($rows > 0) {
        print 'Username already exists...';
    } else {
        $query = "INSERT INTO `user` (username, password, email, name) VALUES ('$username', '$password', '$email', '$name')";
        $result = mysql_query($query);
        if($result){

        }
    }

}
<?php

    //Set empty variables.
    $usernameError = $emailError = $passwordError = $nameError = $okmsg = "";
    $username = $password = $email = $name = "";

    if (isset($_POST['submit'])) {

        //Check if empty labels form
        if (empty($_POST['name'])) {
            $userError = "The 'name' is required.";
            echo '<script>window.location="#registrer"</script>';
        } else { $name = $_POST['name']; }

        if (empty($_POST['email'])) {
            $emailError = "El 'Email' es requerido.";
            echo '<script>window.location="#registrer"</script>';
        } else { 
            $email = $_POST['email'];
            //Check only contain letters and whitespace.
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $emailError = "El 'Email' is not valid. ";
                echo '<script>window.location="#registrer"</script>';
            }
        }                           

        if (empty($_POST['password'])) {
            $passwordError = "The 'password' is requiered.";
            echo '<script>window.location="#registrer"</script>';
        } else { 
            $password = $_POST['password']; 
        }

    }
        //Check if correctly filled
        if ($name && $username && $email && $password) {

            require('connect.php');

            //Query SQL
            $sql = "SELECT * FROM user WHERE username='$username'"; //String SQL
            $query = mysqli_query($ConDB, $sql);//Query
            //Securite
            $username = mysqli_real_escape_string($ConDB, $username);
            $password = mysqli_real_escape_string($ConDB, $username);
            $passw = sha1($password);//For securite.
            $name = mysqli_real_escape_string($ConDB, $username);
            $email = mysqli_real_escape_string($ConDB, $username);

            if ($existe = mysqli_fetch_object($query)) {

                $usernameError = "The 'Username' is already exists.";
                echo '<script>window.location="#registrer"</script>';

            } else {

                $sql = "INSERT INTO user (username, password, email, name) VALUES ('$username', '$passw', '$email', '$name')";

                mysqli_query($ConDB, $sql);


                $okmsg = "Register with succes.";

                mysqli_close($ConDB);//Close conexion.

                echo '<script>window.location="#registrer"</script>';
            }



        }

?>

<a name="registrer"></a>

<form action="" method="POST">

    <p><label>name&nbsp;&nbsp; : </label>
     <input id="password" type="text" name="name" placeholder="name" /></p>
     <?php echo $nameError; ?>

    <p><label>User Name : </label>
    <input id="username" type="text" name="username" placeholder="username" /></p>
    <?php echo $usernameError; ?>

    <p><label>E-Mail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : </label>
     <input id="password" type="email" name="email"/></p>
     <?php echo $emailError; ?>

     <p><label>Password&nbsp;&nbsp; : </label>
     <input id="password" type="password" name="password" placeholder="password" /></p>
     <?php echo $passwordError; ?>


    <a class="btn" href="login.php">Login</a>
    <input class="btn register" type="submit" name="submit" value="Register" />
    <?php echo $okmsg; ?>
</form>
--
-- DATA BASE: `user`
-- 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

CREATE TABLE user (
   id int(11) unsigned not null auto_increment primary key,
   name varchar(50) not null,
   email varchar(80) not null unique,
   username varchar(30) not null unique,
   password varchar(40) not null
)engine=InnoDB default charset=utf8 collate=utf8_general_ci;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
    // when user submit the form
    $('form').on('submit', function(event){
        $.ajax({
            url: "check_username.php",
            type: "POST",
            dataType: "JSON",
            data: {
                username: $("#username").val() // get the value from username textbox
            },
            success: function(data){
                if(data.status == "exists"){
                    alert('Username already existed');
                }
                else{
                    $('form').submit();
                }
            },
        });
        event.preventDefault();
    });
</script>
<form action="" method="POST">
    <p>
        <label>name&nbsp;&nbsp; : </label>
        <input id="password" type="text" name="name" placeholder="name" />
    </p>
    <p>
        <label>User Name : </label>
        <input id="username" type="text" name="username" placeholder="username" />
    </p>
    <p>
        <label>E-Mail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : </label>
        <input id="password" type="email" name="email"/>
    </p>
    <p>
        <label>Password&nbsp;&nbsp; : </label>
        <input id="password" type="password" name="password" placeholder="password" />
    </p>
    <a class="btn" href="login.php">Login</a>
    <input class="btn register" type="submit" name="submit" value="Register" />
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
    // when user typing in 'username' textbox
    $('form').on('submit', function(event){
        $.ajax({
            url: "check_username.php",
            type: "POST",
            dataType: "JSON",
            data: {
                username: $("#username").val() // get the value from username textbox
            },
            success: function(data){
                if(data.status == "exists"){
                    alert('Username already existed');
                }
                else{
                    $('form').submit();
                }
            },
        });
        event.preventDefault();
    });
</script>
<?php
    // Check if 'username' textbox is not empty
    if(!empty($_POST['username'])){
        $username = trim(mysqli_real_escape_string($_POST['username']));
        // Check the database if the username exists
        $query = "SELECT username FROM `user` WHERE username = '".$username."'";
        $result = mysqli_query($query);
        if(mysqli_num_rows($result) > 0){
            // if username already exist
            // insert into array, to be sent to registration.php later
            $response['status'] = 'exists';
        }
        else{
            // if username available
            $response['status'] = 'available';
        }
    }

    header('Content-type: application/json');
    echo json_encode($response);
    exit;
?>