Thứ Năm, 8 tháng 5, 2025

15.Form Validation - Kiểm tra tính hợp lệ của Form trong PHP

Trong lúc tạo Form, một việc mà chúng ta luôn quan tâm là tính hợp lệ khi người sử dụng điền thông tin vào Form. Ví dụ, trong Form đơn giản chỉ gồm Tên như chúng ta bàn trong bài trước, giả sử người sử dụng thay vì điền "Tuấn", "Hùng", "Loan", "Ngọc"....thì lại ghi là "123456"...đó là không hợp lệ.

Form Validation nhằm kiểm tra để đảm bảo mọi thông tin điền vào đều hợp lệ.

Có hai kiểu Validation có sẵn trong PHP. Đó là:


  1. Client-Side Validation − Validation được thực hiện trên trình duyệt web ở Client.
  2. Server-Side Validation − Sau khi được đệ trình tức là được "điền đơn" bởi người dùng, dữ liệu sẽ được gửi tới Server và thực hiện các kiểm tra Validation trong thiết bị Server.

Đây là phần nhìn đơn giản, nhưng thực tế lại rất chi là rắc rối. Tạm thời chúng ta "cưỡi ngựa xem hoa" đã.


Tham khảo sơ qua một số qui tắc Validation cho Field


FieldQui tắc Validation
NameYêu cầu chữ cái và khoảng trắng
EmailYêu cầu @ và .
WebsiteYêu cầu một URL hợp lệ
RadioPhải là có thể lựa chọn ít nhất 1 lần
Check BoxPhải là có thể kiểm tra ít nhất 1 lần
Drop Down menuPhải là có thể lựa chọn ít nhất 1 lần


URL hợp lệ

Minh họa Validation của URL:


$website = input($_POST["site"]);


if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {

   $websiteErr = "URL không hợp lệ"; 

}

Cú pháp trên sẽ kiểm tra một URL đã cho là hợp lệ hay không. Nó sẽ chấp nhận một số từ khóa như https, ftp, www, a-z, 0-9, …


Email hợp lệ

Minh họa Validation của địa chỉ Email:


$email = input($_POST["email"]);


if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

   $emailErr = "Định dạng không hợp lệ, mời bạn nhập lại địa chỉ Email"; 

}

Cú pháp trên sẽ kiểm tra địa chỉ Email đã cho là hợp lệ hay không. Nếu không, nó sẽ hiển thị một thông báo lỗi.


Ví dụ

Ví dụ sau minh họa một form:


<html>

<head>

</head>

<body>  


<?php


// định nghĩa biến và gán giá trị rỗng

$ten= $email = $gioitinh = $ghichu = $website = "";

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


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

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

  $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">

  <br><br>


  E-mail: <input type="text" name="email">

  <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>

 

Bạn thử ví dụ trên bằng việc đặt source code vào test.php script và chạy thử:





Chúng ta sẽ tiếp tục trong bài sau.