如果用户名是免费的,如何发出ajax请求,

时间:2011-12-16 17:14:57

标签: validation jquery

我已经完成了所有验证并显示错误或确定消息。现在最后一件事,我想检查数据库的用户名可用性,所以我需要查询我的服务器。

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;
}

这足够了,或者你可以建议我最安全的东西......

1 个答案:

答案 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处理您的所有用户名检查等。如果出现错误,只需返回错误消息而不是成功消息。

但您绝对需要进行服务器端验证。如果不这样做,你将付出代价。