Sau đây mình sẽ đi luôn vào hướng dẫn làm sao để tạo được một Submit form đăng nhập dùng PHP và jQuery thỏa mãn các yêu cầu:

  • Gửi dữ liệu đến trang xử lý dữ liệu.
  • Không cần load lại trang

Trong bài hướng dẫn này mình sẽ tạo một form đăng nhập dùng jQuery Ajax và PHP.

Bước 1

Tạo một mẫu đăng nhập bằng html như sau (Mình sử dụng luôn một mẫu Bootstrap 4 – Lấy ở đây):

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Jekyll v3.8.5">
    <title>Signin Template · Bootstrap</title>
    <!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <style>
      .bd-placeholder-img {
        font-size: 1.125rem;
        text-anchor: middle;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
      }
      @media (min-width: 768px) {
        .bd-placeholder-img-lg {
          font-size: 3.5rem;
        }
      }
    </style>
    <!-- Custom styles for this template -->
    <link href="signin.css" rel="stylesheet">
  </head>
  <body class="text-center">
    <form class="form-signin" method="post" id="loginform">
  <img class="mb-4" src="/docs/4.3/assets/brand/bootstrap-solid.svg" alt="" width="72" height="72">
  <h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
  <label for="inputEmail" class="sr-only">Email address</label>
  <input type="email" name="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
  <label for="inputPassword" class="sr-only">Password</label>
  <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required>
  <div class="checkbox mb-3">
    <label>
      <input type="checkbox" value="remember-me"> Remember me
    </label>
  </div>
  <button class="btn btn-lg btn-primary btn-block" type="submit" id="btnSubmit">Sign in</button>
  <p class="mt-5 mb-3 text-muted">© 2017-2019</p>
</form>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>

Chú ý: Đặt ID cho các nơi quan trọng cần lấy dữ liệu như email, mật khẩu và nút submit

Bước 2

Sử dụng 1 thư viện jQuery mới nhất chèn vào phần footer của website. ( Ở mẫu trên dòng số 50 mình đã chèn vào sẵn nhé, vì vậy nếu các bạn dùng mẫu trên thì không cần chèn thêm)

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

Bước 3

Viết code JS để thực hiện việc kiểm tra dữ liệu khi bạn click nút Submit, nếu dữ liệu thỏa mãn điều kiện thì sẽ gửi lên trang xử lý dữ liệu.

<script type="text/javascript">
$(document).ready(function()
{
    //khai báo nút submit form
    var submit   = $("#btnSubmit");
    //khi thực hiện kích vào nút Sign in
    submit.click(function()
    {
        //khai báo các biến
        var email = $("#inputEmail").val(); //lấy giá trị input của email
        var password = $("#inputPassword").val(); //lấy giá trị input mật khẩu
        //kiểm tra xem bạn đã nhập email chưa
        if(email == ''){
            alert('Vui lòng nhập email của bạn');
            return false;
        }
        //kiểm tra xem bạn đã nhập mật khẩu chưa
        if(password == ''){
            alert('Vui lòng nhập mật khẩu');
            return false;
        }
        //Lấy dữ liệu trong form login
        var data = $('form#loginform').serialize();
        //Sử dụng hàm $.ajax()
        $.ajax({
        type : 'POST', //kiểu post
        url  : 'submit.php', //gửi dữ liệu sang trang submit.php
        data : data,
        success :  function(data)
               {
                    if(data == 'false')
                    {
                        alert('Sai Email hoặc mật khẩu');
                    }else{
                        alert('Đăng nhập thành công!');
						// Xử lý sau khi đăng nhập thành công
                    }
               }
        });
        return false;
    });
});
</script>

Bước 4

Viết code php của trang submit.php để xử lý dữ liệu gửi đến từ code js bên trên

<?php
if($_POST)
{
    $email = trim($_POST['email']);
    $password = trim($_POST['password']);
    //nếu đăng nhập đúng
    if($email == 'admin@vzn.vn' && $password == '123456')
    {
		echo 'Thành công';
    }else{
        //nếu đăng nhập sai
        echo 'false';
    }
}
?>

Trên đây là ví dụ đơn giản để các bạn có thể hiểu cách đăng nhập dùng jQuery Ajax kết hợp với PHP.

Chúc các bạn thành công