@veme312

Как в реальном времени валидировать вводимые данные в чекбокс и сравнивать с реальными?

Привет. У меня есть сайт. На этом сайте сейчас я делаю личный кабинет совмещенный с игровым сервером.
Я хочу сделать регистрацию профиля на сайте по нику.

Как идея: Сделать поле ввода ника > отправка юзера вместе с post запросом > проверка занятости ника и если ник есть в базе то отправить на страницу с сообщением о занятости ника. А если нет ника в базе, то отправлять на страницу регистрации.

однако, я вдохновлен xbox. Где при вводе ника, сразу показывает его занятость. как это можно реализовать не отправляя юзера по 101 странице?

Ники храню в базе данных
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
frontend

<div>
    <label for="nickname">Ник:</label>
    <input type="text" placeholder="Введите ник..." id="nickname" name="nickname">
    <div id="msg"></div>
</div>
<script type=""text/JavaScript">
    var nickname = document.querySelector('#nickname');
    var msg = document.querySelector('#msg');

    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        var result = JSON.parse(this.responseText);
        //status == false  ник занят
        //status == true   ник свободен
        if(result['status'] === false){
          msg.innerHTML = '&#10060; Этот ник занят!';
        } else {
          msg.innerHTML = '&#9989; Ник свободен';
        }
      }
    };

    nickname.addEventListener("blur", function(){
        msg.innerHTML = '';
        let data = new FormData();
        data.append('nick', nickname.value);
        xhttp.open("POST", "ajax.php", true);
        xhttp.send(data);
    });
</script>


backend

<?php
    // Получаем $_POST['nick']
    // СОздаем запрос в бд типа 
    // SELECT id FROM users WHERE nick LIKE 's'
    // читаем про подготовленные запросы
    // Далее если id есть status = false иначе true
    //status == false  ник занят
    //status == true   ник свободен
    // заворачиваем в JSON
    

    // ТЕСТ без бд
    
    //массив занятых ников
    $nicks = ['admin', 'moderator', 'pushkin', 'tester', 'susanin', 'lev_tolstoi', 'administrator'];
    
    //если $_POST['nick'] есть в массиве занятых, то статус false, если нет, то true
    if (in_array(strtolower($_POST['nick']), $nicks)){
        $status = false;
    } else {
        $status = true;
    }
    //заворачиваем в JSON и выводим
    echo json_encode(['status' => $status]);

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Используй AJAX. На поле Input вешай, к примеру, обработчик blur, который будет срабатывать каждый раз когда input теряет фокус и отправляй запрос к базе на проверку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы