我已经完成了所有验证并显示错误或确定消息。现在最后一件事,我想检查数据库的用户名可用性,所以我需要查询我的服务器。
var b = $("#input_username_holder").val();
if (b != "Username" && b != "" && b.length > 6 && b.length < 17) {
$.ajax({
type: "POST",
url: "check_username.php",
data: "b=" + b,
}).done(function(msg) {
$("#username_result").html(msg);
});
}
现在,此代码可以很好地显示发生的任何错误。我想发一个ajax请求,但只有在用户名可用时才会发出请求:
if (fullname valid) {
if (username is available) {
$.ajax({
type: "POST",
url: "register.php",
data: "a=" + a + "&b=" + b + "&c=" + c + "&d=" + d,
}).done(function(msg) {
$("#register_box").html(msg);
});
}
}
我一直都知道这个威胁,js的验证可能会格式错误,并且可能会对整个数据库执行SQL注入,所以我总是尽力保护我的网站免受任何黑客攻击。我做这样的事情
$user_email = filter_input(INPUT_POST, 'usr_email', FILTER_SANITIZE_STRING);
此外......我通过此函数传递值..
function filter($data) {
$data = trim(htmlentities(strip_tags($data)));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = mysql_real_escape_string($data);
return $data;
}
这足够了,或者你可以建议我最安全的东西......
答案 0 :(得分:1)
我建议做这样的事情:
$.ajax({
type: "POST",
url: "register.php",
data: {'a': a,
'b': b,
'c': c,
'd': d}
}).done(function(msg) {
if (msg == 'invalid') {
$("#register_box").html('Username is invalid');
} else if (msg == 'taken') {
$("#register_box").html('Username has been taken');
} else {
$("#register_box").html('Success');
}
});
让register.php
处理您的所有用户名检查等。如果出现错误,只需返回错误消息而不是成功消息。
但您绝对需要进行服务器端验证。如果不这样做,你将付出代价。