不允许用户使用php和MySQL选择现有用户名,如果用户选择现有用户名,则显示警告框

时间:2014-03-17 09:56:12

标签: javascript php mysql

我正在使用php和MySQL,我的问题是如何在javascript中创建函数或代码,在选择已存在的用户名时提醒用户,并且不允许他们提交注册表。

感谢

1 个答案:

答案 0 :(得分:0)

我使用jQuery和PDO完成了这项操作,因此它是一个ajax用户名检查

这是我的jQuery

$(document).ready(function() {

    $('#username').keyup(function() {

        var username = $('#username').val();
        if(username == "" || username.length < 4) {

            $('#username').css('border', '3px #CCC solid');
            $('#tick').hide();
        }
        else{

            $.ajax({
               type: "POST",
               url: "util/UsernameCheck.php",
               data: 'username='+ username,
               cache: false,
               success: function(response) {

                    if(response == 1) {

                        $('#username').css('border', '3px #C33 solid'); 
                        $('#tick').hide();
                        $('#cross').fadeIn();
                    }
                    else {

                        $('#username').css('border', '3px #090 solid');
                        $('#cross').hide();
                        $('#tick').fadeIn();
                    }
                },
                error: function(xhr, textStatus, errorThrown) {
                   alert('request failed');
                }
            });
        }
    });
});

#tick和#cross只是隐藏/显示的图像,具体取决于是否使用了用户名。

UsernameCheck.php

<?php

// your database info here
require '../config.php';

try {
    // create a new instance of a PDO connection
    $db = new PDO(DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
    // if the connection fails, display an error message
    echo 'ERROR: ' . $e->getMessage();
}

if(isset($_POST['username']) && !empty($_POST['username'])) {

    $username = $_POST['username'];

    $sql = 'SELECT username FROM users WHERE username = :username';

    $stmt = $db->prepare($sql);
    $stmt->bindValue('username', $username);
    $stmt->execute();
    $count = (int) count($stmt->fetchAll());

    echo $count;
}

?>
相关问题