我在使用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有点事......谢谢!
答案 0 :(得分:1)
请勿在客户端执行此操作。您的密码,即使是加密的,也不应该离开您的服务器。创建一个服务器端脚本,它将接受用户名并返回一个布尔值,然后通过AJAX调用它。
另外,要回答您的直接问题,请查找JavaScript方法String.split
和String.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)
我希望这个例子能够说明实际执行此操作的安全性。
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>");
}
});
});
}