Проверьте, существует ли имя пользователя в базе данных с codeigniter и ajax - PullRequest
0 голосов
/ 17 апреля 2019

Как проверить, есть ли имя пользователя в моей базе данных, используя ajax и воспламенитель кода?Мне удалось создать функцию без пустых полей и недействительных адресов электронной почты.Теперь единственная функция, которую я не смог выполнить, - это существование имени пользователя в БД.

Функция: я хочу, чтобы ajax отображал мне сообщение, когда кто-то пытается создать имя пользователя, и введенное имя пользователя уже существует в системе.

function reg_new_user() {
  var frstname = document.getElementById('first_name').value;
  var lstname = document.getElementById('last_name').value;
  var uemail = document.getElementById('user_email').value;
  var uname = document.getElementById('user_name').value;
  var upasswd = document.getElementById('user_password').value;

  if (frstname == '' || lstname == '' || uemail == '' || uname == '' || upasswd == '') {
    alert('All fields are required');
    $('#add_new_user_mod').modal('hide');
    redirect('admin/Welcome/users');
  }
  if (uemail.indexOf('@') <= 0) {
    alert('Invalid Email address!');
    $("form").trigger("reset");
    redirect('admin/Welcome/users');
  }

  $.ajax({
    url: "<?php echo base_url().'index.php/admin/Welcome/add_user_new'; ?>",
    data: 'name=' + frstname + '&lastname=' + lstname + '&email=' + uemail + '&username=' + uname + '&password=' + upasswd,
    async: false,
    type: "POST",
    success: function(data) {
      $('#add_new_user_mod').modal('hide');
      alert('User added successfully');
      window.location = "<?php echo base_url().'index.php/admin/Welcome/users'; ?>";
    }
  });
  return false;
}
<div class="tools">
  <div class="btn-group">
    <div class="btn-group">


      <a class="btn  btn-info btn-raised ink-reaction" onclick="add_new_user_mod(); ">Add User</a>

    </div>
  </div>
</div>
<div class="modal fade" id="add_new_user_mod" tabindex="-1" role="dialog" aria-labelledby="simpleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="simpleModalLabel">Add Item</h4>
      </div>
      <div class="modal-body" id="adibody">

        <div id="err"></div>
        <form>
          <div class="form-group">
            <label>FirstName</label>
            <input type="text" class="form-control" id="first_name">
          </div>
          <div class="form-group">
            <label>LastName</label>
            <input type="text" class="form-control" id="last_name">
          </div>
          <div class="form-group">
            <label>Email</label>
            <input type="text" class="form-control" id="user_email">
          </div>
          <div class="form-group">
            <label>Username</label>
            <input type="text" class="form-control" id="user_name">
            <span id="feedback"></span>
          </div>
          <div class="form-group">
            <label>Password</label>
            <input type="password" class="form-control" id="user_password">
          </div>
          <div class="form-group">
            <button type="button" class="btn btn-success" onclick="reg_new_user();">Register</button>
          </div>
        </form>


      </div>
      <!-- /.modal-content -->
    </div>
    <!-- /.modal-dialog -->
  </div>
  <!-- /.modal -->
  <!-- END SIMPLE MODAL MARKUP -->
</div>

1 Ответ

1 голос
/ 17 апреля 2019

Целесообразно проводить валидацию как на передней, так и на задней стороне, в то время как я бы поспорил с использованием alert() с точки зрения ux.

Учитывая это, я бы реализовал проверку формы, которая решала бы 2 проблемы: проверку бэкэнда (потому что на стороне клиента никогда нельзя доверять), и чтобы убедиться, что имя пользователя уникально.

Например

function add_new_user() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('name', 'Name', 'required');
    // ^ do the same for your other fields
    $this->form_validation->set_rules('username', 'Username', 'required|is_unique[users.username]'); // is_unique `table_name`.`username field`
    if (!$this->form_validation->run()) {
        echo json_encode(['status' => 'error', 'msg' => validation_errors()]);
    }
    // post stuff to database
    echo json_encode(['status' => 'success', 'msg' => '']);
}

И js будет выглядеть примерно так:

$.ajax({
    url: "<?php echo base_url() . 'index.php/admin/Welcome/add_user_new'; ?>",
    data: 'name=' + frstname + '&lastname=' + lstname + '&email=' + uemail + '&username=' + uname + '&password=' + upasswd,
    async: false,
    type: "POST",
    dataType: 'json',
    success: function (data) {
        if (data.status == 'success') {
            $('#add_new_user_mod').modal('hide');
            alert('User added successfully');
            window.location = "<?php echo base_url() . 'index.php/admin/Welcome/users'; ?>";
        } else {
            alert(data.msg);
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...