简体   繁体   English

使用PHP和JavaScript进行AJAX即时检查

[英]AJAX instant check with php and javascript

I am developing a little webiste where I need to handle User registration. 我正在开发一些网站,我需要处理用户注册。 As usual, if a user requests a username that is already being used, the system should not allow to proceed with the registration. 与往常一样,如果用户请求已使用的用户名,则系统不应允许进行注册。

I want to verify that during the register as most modern websites do. 我想像大多数现代网站一样在注册过程中进行验证。 How do I do that using AJAX? 如何使用AJAX做到这一点?

Register form: 报名表格:

<div class="container">
        <form id="register_form" action="actions/register_action.php" method="post">

            <div class="form-group">
                <label for="name_area">Name</label>
                <input type="text" name="name" class="form-control" placeholder="Name">
            </div>
            <div class="form-group">
                <label for="username_area">Username</label>
                <input type="text" name="username" class="form-control" id="username_id" placeholder="Username">
            </div>
            <div class="form-group">
                <label for="email_area">Email</label>
                <input type="email" name="email" class="form-control" placeholder="Email">
            </div>
            <div class="form-group">
                <label for="pass_area">Password</label>
                <input type="password" name="pass" class="form-control" placeholder="Password">
            </div>
            <div class="form-group">
                <label for="conf_pass_area">Confirm password</label>
                <input type="password" name="conf_pass_area" class="form-control" placeholder="Confirm password">
            </div>
            <br>
            <div class="form-group">
                <input type="submit" class="btn btn-primary" id="button_area" placeholder="Submit">
                <!--action to:register_action!-->
            </div>
        </div>
    </form> 
    </div>

users.php (where I do my php function regarding users): users.php(我在其中执行有关用户的php函数):

<?php
    //checks if username inserted is already in use
    function check_username($username_pretended) {
        global $conn;

        $stmt = $conn->prepare('SELECT * FROM CommonUsers WHERE username=?');
        $stmt->execute(array($username_pretended));

        $res = $stmt->fetch();

        if($res['username'] == "") {
            return false;
        }
        else return true;
    }

    //inserts an user in the database
    function insertUser($name, $username, $email, $password) {
        global $conn;

        $stmt = $conn->prepare('INSERT INTO CommonUsers(name, username, email, password) VALUES (?, ?, ?, ?)');
        $stmt->execute(array($name, $username, $email, $password));
    }
?>

From top of my head: 从我的头顶:

$("#username_id").on("change", function() 
{
    $.ajax(
    {
        method: "get", // or maybe post?
        url: "yoururlhere",
        data: 
        {
            username: $(this).val()
        },
        success: function(data)
        {
            if (data == "0")
            {
                // Hide warning
            }
            else
            {
                // Warn user that username is already taken
            }
        }
    });
});

This is the most simple way of doing this. 这是最简单的方法。 Its sending the username to a server url for checking. 将用户名发送到服务器URL进行检查。 Of course you will need an element to show the warning(which I could not find in your DOM). 当然,您将需要一个元素来显示警告(我在您的DOM中找不到)。

You can check the ajax() method docs for detailed options. 您可以查看ajax() method docs以获取详细选项。

In your PHP file: 在您的PHP文件中:

$username = $_GET["username"];

if (check_username($username))
{
    return "1";
}
else 
{
    return "0";
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM