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à:
- Client-Side Validation − Validation được thực hiện trên trình duyệt web ở Client.
- 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
| Field | Qui tắc Validation |
|---|---|
| Name | Yêu cầu chữ cái và khoảng trắng |
| Yêu cầu @ và . | |
| Website | Yêu cầu một URL hợp lệ |
| Radio | Phải là có thể lựa chọn ít nhất 1 lần |
| Check Box | Phải là có thể kiểm tra ít nhất 1 lần |
| Drop Down menu | Phả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.