Biểu mẫu PHP - Xác thực E-mail và URL
Chương này trình bày cách xác thực tên, e-mail và URL.
PHP - Xác thực tên
Mã bên dưới hiển thị một cách đơn giản để kiểm tra xem trường tên chỉ chứa các chữ cái, dấu gạch ngang, dấu nháy đơn và khoảng trắng. Nếu giá trị của trường tên không hợp lệ thì lưu 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ẫu trong một chuỗi, trả về true nếu mẫu tồn tại và trả về false nếu ngược lại.
PHP - Xác thực email
Cách dễ nhất và an toàn nhất để kiểm tra xem địa chỉ email có được định dạng đúng hay không là sử dụng hàm filter_var()
của PHP.
Trong mã bên dưới, nếu địa chỉ e-mail không được định dạng đúng thì hãy lưu 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
Mã bên dưới hiển thị 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ì hãy lưu 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ờ, kịch bản trông như thế này:
Ví dụ
// 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"]);
}
}
Chạy Ví dụ »Bước tiếp theo là trình bày cách ngăn biểu mẫu làm trống tất cả các trường nhập khi người dùng gửi biểu mẫu.