AJAX, чтобы проверить, логин существует или нет - PullRequest
0 голосов
/ 09 сентября 2010

У меня есть поле для входа ...

когда пользователь начинает печатать .. я хочу проверить, существует ли введенное имя пользователя в базе данных или нет ...

если имя входа существует, я собираюсь установить кнопку входа активным ... если оно не существует, я собираюсь установить кнопку входа деактивированным ...

Конечно, мне понадобится AJAX , чтобы выполнить мой mySQL через PHP , хотя я не знаю, как это будет сделано ...

допустим, это мой запрос

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

как это сделать

Ответы [ 3 ]

1 голос
/ 09 сентября 2010

Вы можете использовать JSON-RPC, вот реализация в 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 голос
/ 09 сентября 2010

будь проще:

$(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();
}
?>
0 голосов
/ 09 сентября 2010

Посмотрите на jQuery AJAX и jQuery TypeWatch

Но, как сказал @halfdan, это потенциальный риск для безопасности. Я никогда не видел, чтобы сайт делал это с именем пользователя, только с результатами поиска.

Ваша потенциальная раздача конечной точки (URL) на вашем веб-сайте, которую любой может запросить, чтобы узнать, является ли имя пользователя действительным. Интранет или нет, это риск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...