Thứ Sáu, 9 tháng 5, 2025

17.Form Validation - Kiểm tra tính hợp lệ của Form trong PHP phần 3

Chúng ta sẽ tiếp tục với Form Validation. Phần trước chúng ta đã xét tới việc "Bắt buộc" nghĩa là sẽ "Thổi còi" nếu trường nào có yêu cần bắt buộc.

Ở phần đầu, chúng ta có dịp "liếc qua" hàm filter_var() trong việc xét hỏi tiêu chuẩn của Email. Hàm filter_var() sẵn trong thư viện PHP được sử dụng để xác thực hoặc làm sạch dữ liệu. Hàm này kiểm tra xem một biến có đáp ứng các tiêu chí nhất định hay không (xác thực), hoặc loại bỏ các ký tự không mong muốn ra khỏi một chuỗi (làm sạch).

Cú pháp của hàm filter_var():

filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed

Trong đó:

$value: Biến bạn muốn lọc.

$filter: ID của bộ lọc cần áp dụng (ví dụ: FILTER_VALIDATE_EMAIL).

$options: Mảng liên kết tùy chọn hoặc mặt nạ bit của các cờ để tinh chỉnh hành vi lọc


Các loại bộ lọc chính

  • Bộ lọc xác thực (FILTER_VALIDATE_*): Các bộ lọc này trả về dữ liệu nếu dữ liệu đó hợp lệ, hoặc trả về giá trị `false` nếu không hợp lệ.

  1. FILTER_VALIDATE_EMAIL: Kiểm tra định dạng email hợp lệ.
  2. FILTER_VALIDATE_INT: Đảm bảo giá trị là một số nguyên hợp lệ.
  3. FILTER_VALIDATE_IP: Xác thực địa chỉ IP (IPv4 hoặc IPv6).
  4. FILTER_VALIDATE_URL: Xác nhận rằng một chuỗi là một URL được định dạng đúng chuẩn.
Trước hết chúng ta bắt buộc phải nhập email. Tương tự như với Tên:

  if (empty($_POST["email"])) {
     $emailerr = "Bạn phải nhập địa chỉ Email";
  }
  else
  {
      $email = test_input($_POST["email"]);

   }

Và cũng sẽ in ra kết quả:

<span class="error">* <?php echo $emailerr;?></span>

Trước khi tiếp tục, chúng ta chạy thử:










Bây giờ nếu người dùng nhập email, chúng ta sẽ tiếp tục kiểm tra xem email có hợp lệ không?

// kiểm tra đã nhập đúng định dạng email chưa
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         $emailerr = "Định dạng Email không hợp lệ"; 
      }

Giờ đây code của chúng ta đã có "hình dáng" sau:

<html>

<head>
<style>
     .error {color: #FF0000;}
</style>
</head>

<body>  



<?php

// define variables and set to empty values

$ten = $email = $gioitinh = $ghichu = $website = "";
$tenerr = $emailerr = $gioitinherr = $ghichuerr= $websiteerr = "";


if ($_SERVER["REQUEST_METHOD"] == "POST") {

 if (empty($_POST["ten"])) {
     $tenerr = "Bạn phải nhập họ tên";
 }
 else
 {
     $ten = test_input($_POST["ten"]);
 }
 
   if (empty($_POST["email"])) {
     $emailerr = "Bạn phải nhập địa chỉ Email";
  }
  else
  {
      $email = test_input($_POST["email"]);
      // kiểm tra đã nhập đúng định dạng email chưa
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         $emailerr = "Định dạng Email không hợp lệ"; 
      }

   }


  $website = test_input($_POST["website"]);

  $ghichu = test_input($_POST["ghichu"]);

  $gioitinh = test_input($_POST["gioitinh"]);

}



function test_input($data) {

  $data = trim($data);

  $data = stripslashes($data);

  $data = htmlspecialchars($data);

  return $data;

}

?>



<h2>Ví Dụ PHP Form Validation </h2>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  

  Tên: <input type="text" name="ten"> <span class="error">* <?php echo $tenerr;?></span>

  <br><br>

  E-mail: <input type="text" name="email"> <span class="error">* <?php echo $emailerr;?></span>

  <br><br>

  Website: <input type="text" name="website">

  <br><br>

  Ghi Chú: <textarea name="ghichu" rows="5" cols="40"></textarea>

  <br><br>

  Giới tính:

  <input type="radio" name="gioitinh" value="nữ">Nữ

  <input type="radio" name="gioitinh" value="nam">Nam

  <br><br>

  <input type="submit" name="submit" value="Submit">  

</form>



<?php

echo "<h2>Bạn đã điền thông tin:</h2>";

echo $ten;

echo "<br>";

echo $email;

echo "<br>";

echo $website;

echo "<br>";

echo $ghichu;

echo "<br>";

echo $gioitinh;

?>



</body>

</html>


Chạy thử sẽ cho kết quả:






Chúng ta dừng ở đây, sẽ bàn về URL trong phần sau.





Không có nhận xét nào:

Đăng nhận xét