PHP Forms - Xác thực Email và URL
Chương này trình bày cách xác thực tên, e-mail và URL.
PHP - Tên xác thực
Đoạn mã dưới đây cho thấy một cách đơn giản để kiểm tra xem trường tên có chỉ chứa các chữ cái, dấu gạch ngang, dấu nháy đơn và khoảng trắng hay không. Nếu giá trị của trường tên không hợp lệ, thì lưu trữ một thông báo lỗi:
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
Hàm preg_match () tìm kiếm một chuỗi cho mẫu, trả về true nếu mẫu tồn tại và false nếu không.
PHP - Xác thực E-mail
Cách dễ nhất và an toàn nhất để kiểm tra xem một địa chỉ email có được định dạng tốt hay không là sử dụng hàm filter_var () của PHP.
Trong đoạn mã dưới đây, nếu địa chỉ e-mail không được định dạng tốt, thì hãy lưu trữ một thông báo lỗi:
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
PHP - Xác thực URL
Đoạn mã dưới đây cho thấy một cách để kiểm tra xem cú pháp địa chỉ URL có hợp lệ hay không (biểu thức chính quy này cũng cho phép dấu gạch ngang trong URL). Nếu cú pháp địa chỉ URL không hợp lệ, thì lưu trữ một thông báo lỗi:
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
PHP - Xác thực Tên, E-mail và URL
Bây giờ, tập lệnh trông như thế này:
Thí dụ
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
?>
Bước tiếp theo là chỉ ra cách ngăn biểu mẫu làm trống tất cả các trường đầu vào khi người dùng gửi biểu mẫu.