By GokiSoft.Com| 10:40 22/06/2020|
Tài Liệu PHP

PHP Form URL/E-mail

Bài này sẽ cho chúng ta thấy cách validate names, e-mails, và URLs.


PHP - Validate Name

Code dưới đây cho thấy cách đơn giản để kiểm tra xem trường name chỉ chứa các chữ cái và khoảng trắng. Nếu giá trị của trường name 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ột chuỗi cho pattern, trả về true nếu pattern tồn tại và false nếu không.


PHP - Validate 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 đúng hay không là sử dụng hàm filter_var().

Trong code dưới đây, nếu địa chỉ e-mail không được định dạng đúng, thì 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 - Validate URL

Code dưới đây cho thấy một cách để kiểm tra xem cú pháp địa chỉ URL có hợp lệ 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 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 - Validate Name, E-mail, và URL

Kết hợp cả 3 trường hợp trên ta có như sau:

Ví 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 chặn form làm trống tất cả các trường input khi người dùng submit form.