Kiểm tra (validation) email và url với PHP

Đây là bài 40/53 bài của series môn học Lập trình Web PHP

Trong bài này, chúng ta sẽ tìm hiểu về validation email và url trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

1. Kiểm tra (validation) name với PHP

Chúng ta có thể kiểm tra xem dữ liệu nhập vào (ví dụ dữ liệu name) 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 dữ liệu nhập vào không hợp lệ thì xuất ra 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";
}

PHP hỗ trợ hàm preg_match() để kiểm tra một chuỗi (string) có thỏa mãn một mẫu (pattern) hay không.

2. Kiểm tra (validation) email với PHP

PHP hỗ trợ hàm filter_var() để kiểm tra xem một chuỗi nhập vào có phải là một địa chỉ email hay không.

$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $emailErr = "Invalid email format";
}

3. Kiểm tra (validation) url với PHP

PHP hỗ trợ hàm preg_match() để kiểm tra một chuỗi (string) có thỏa mãn một mẫu (pattern) của url hay không.

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

4. Ví dụ html form kiểm tra name, email, url với PHP

Bên dưới là một html form có kiểm tra name, email, url với PHP.

<!DOCTYPE HTML>  
<html>
<head>
  <title>Please, give some comments for gochocit.com!</title>
  <style>
    .error {color: #FF0000;}
  </style>
</head>
<body>  

<?php

$nameErr = $emailErr = $commentErr = "";
$name = $email = $website = $comment = "";

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"])) {
    $commentErr = "Comment is required";
  } else {
    $comment = test_input($_POST["comment"]);
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<h2>Please, give some comments for gochocit.com!</h2>
<p><span class="error">* required field</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="name" value="<?php echo $name;?>">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  E-mail: <input type="text" name="email" value="<?php echo $email;?>">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
  Website: <input type="text" name="website" value="<?php echo $website;?>">
  <br><br>
  Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
  <span class="error">* <?php echo $commentErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>

<?php
echo "<h2>Your Input:</h2>";
echo "Name: ".$name;
echo "<br>";
echo "E-mail: ".$email;
echo "<br>";
echo "Website: ".$website;
echo "<br>";
echo "Comment: ".$comment;
?>

</body>
</html>
Ví dụ validation email trong html form với PHP

Trong hình trên, email khi nhập sai định dạng sẽ được thông báo lỗi.

Tham khảo: PHP Forms – Validate E-mail and URL

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Kiểm tra (validation) dữ liệu trong html form với PHPXử lý upload file với PHP >>
Chia sẻ trên mạng xã hội:

1 bình luận về bài viết “Kiểm tra (validation) email và url với PHP

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.