jQuery:检查用户名可用性

时间:2011-04-15 11:03:44

标签: jquery

我在使用Web应用程序注册时使用jQuery检查用户名可用性。出于某种原因,而不是将用户数据保存在数据库中,我将注册用户的ID和密码存储在平面文件accounts.txt中。格式如下:

乔:frt25t5546g
约翰:sdfsdgg

更新

感谢各位朋友的帮助,我终于得到了一个线索,我按照http://roshanbh.com.np/2008/04/check-username-available-ajax-php-jquery.html上的方法进行了操作。

以下是我的registration.html

的一部分
$(document).ready(function()
{
  $("#uname").blur(function(){
  $.post("usernameCheck.php",{user_name:$(this).val()},function(data)
  {
  if(data=="no"){
  $(this).html("This username already exists");
  }
  else{
  $(this).html("Username is available!");
  }
  });
  });
}

<body>
<form name="form" method="post" action="" />
<table>
<tr><td>Username: </td>  
<td><input type="text" name="uname" id="uname" /></td></tr>
</table>
<input type="submit" name="submit" value="Register" />
</form>
</body>

我对jQuery很新,ajax有点事......谢谢!

3 个答案:

答案 0 :(得分:1)

请勿在客户端执行此操作。您的密码,即使是加密的,也不应该离开您的服务器。创建一个服务器端脚本,它将接受用户名并返回一个布尔值,然后通过AJAX调用它。

另外,要回答您的直接问题,请查找JavaScript方法String.splitString.match

答案 1 :(得分:0)

建议使用 NOT 来使用此代码,但仅举例来说,您可以这样做

$(function(){
    $parsed={};
    $.ajax({
        url: 'userpass.txt',
        complete: function(data, textStatus, jqXHR) {
            // get all the data and separate it by rows
            $.each(data.responseText.split("\n"), function(i,v){
                // split the rows by colon sign
                $parsed[v.split(":")[0]] = v.split(":")[1];
            });
        }
    });
    // when the user is typing the username
    $('input#username').keyup(function(){
        v = $(this).val();
        // check if the username exists
        if ($parsed[v]) {
            alert("user exists");
        }
    });
});

答案 2 :(得分:0)

工作示例:http://jsfiddle.net/peeter/RszUy/

我希望这个例子能够说明实际执行此操作的安全性。

HTML:

<form id="secureForm">
    <input type="text" id="username"/>
    <input type="password" id="password"/>
    <input type="submit" id="submit" value="Submit"/>
    <div id="results"></div>
</form>

CSS:

#results {
    margin-top: 10px;
} 

使用Javascript:

$(document).ready(function() {
    $("#username").keyup(function(e) {
        totallySecureWayToCheckIfUserExists();
    });
});
function totallySecureWayToCheckIfUserExists() {
     $.post("/echo/html/", {
        html: "joe:frt25t5546g\njohn:sdfsdgg\nthis:isstupid"
    }, function(data) {
        var users = data.split("\n");
        $("#results").html("");
        $.each(users, function(index, row) {
            var username = row.split(":")[0];
            var password = row.split(":")[1];
            if(username == $("#username").val()) {
                $("#results").html("").append("<p>"+"Result found! Username '" + username +"' with the password '"+password+"' exists, you cannot use this username sorry!</p>");
                return false;
            }
            else {
                $("#results").append("<p>"+"Doesn't match the username: " + username +" (password="+password+")</p>");
            }
        });
    });   
}