Как сделать ajax-запрос, только если имя пользователя свободно, - PullRequest
0 голосов
/ 16 декабря 2011

Я уже сделал все проверки и показал сообщение об ошибке или ок.Теперь последнее, я хочу проверить доступность имени пользователя из базы данных, поэтому мне нужно запросить мой сервер.

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 Ответ

1 голос
/ 16 декабря 2011

Я предлагаю сделать что-то вроде этого:

$.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 обрабатывать все ваши проверки имени пользователя и тому подобное.Если есть ошибка, просто верните сообщение об ошибке вместо сообщения об успехе.

Но вам абсолютно необходимо , чтобы выполнить проверку на стороне сервера.Вы заплатите цену, если вы этого не сделаете.

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