用于检查登录名是否存在的AJAX

时间:2010-09-09 07:30:54

标签: php ajax mysql jquery login

我有一个登录框......

当用户开始输入时..我想检查输入的LOGIN NAME是否存在于数据库中......

如果登录名存在,我将设置登录按钮激活...如果它不存在我将设置登录按钮deactive ...

offcourse我需要 AJAX 来通过 PHP 来执行我的 mySQL 我很难知道它将如何完成...

让我们说这是我的查询

<?php 
    $result = mysql_query("SELECT * FROM accounts WHERE name='mytextboxvalue'"); 
?>

怎么做

3 个答案:

答案 0 :(得分:1)

您可以使用JSON-RPC,这里是implementation in php 在JQuery中,您可以使用此代码。

var id = 1;
function check_login(){
  var request = JSON.stringify({'jsonrpc': '2.0',
                       'method': 'login_check', 
                       'params': [$('#login_box').val()],
                       'id': id++});
  $.ajax({url: "json_rpc.php", 
        data: request,
        success: function(data) {
          if (data) {
            $('#login_button').removeAttr('disabled');
          } else {
            $('#login_button').attr('disabled', true);
          }
        },
        contentType: 'application/json',
        dataType: 'json',
        type:"POST"});
}

并在php中

<?php

include 'jsonRPCServer.php';
//mysql_connect 
//mysql_select_db
class Service {
  public function login_check($login) {
     $login = mysql_real_escape_string($login);
     $id = mysql_query("SELECT * FROM accounts WHERE name='$login'");
     return mysql_num_rows($id) != 0;
  }
}


$service = new Service();

jsonRPCServer::handle($service);

?>

答案 1 :(得分:1)

保持简单:

$(document).ready(function(){
    var Form = $('#myForm');
    var Input = $('input.username',Form)

    Input.change(function(event){
        Value = Input.val();
        if(Value.length > 5)
        {
            $.getJSON('/path/to/username_check.php',{username:Value},function(response){
                if(response.valid == true)
                {
                    Form.find('input[type*=submit]').attr('disabled','false');
                }else
                {
                     Form.find('input[type*=submit]').attr('disabled','true');
                }
            });
        }
    });
});

然后是PHP方..

<?php
//Load DB Connections etc.
if(!empty($_REQUEST['username']))
{
    $username = mysql_real_escape_string($_REQUEST['username']);

    if(isset($_SESSION['username_tmp'][$username]))
    {
        echo json_encode(array('valid' => (bool)$_SESSION['username_tmp'][$username]));
        die();
    }
    //Check the database here... $num_rows being a validation var from mysql_result
    $_SESSION['username_tmp'][$username] = ($num_rows == 0) ? true : false;

    echo json_encode(array('valid' => (bool)$_SESSION['username_tmp'][$username]));
    die();
}
?>

答案 2 :(得分:0)

查看jQuery AJAX和jQuery TypeWatch

但是像@halfdan所说,这是一个潜在的安全风险。我从未见过网站使用用户名执行此操作,仅使用搜索结果。

您可能会在您的网站上提供一个终点(URL),任何人都可以查询该用户是否有效。内联网与否,这是一种风险。