Hướng dẫn php email validation - xác thực email 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.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.

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.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.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.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>

Hướng dẫn php email validation - xác thực email 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

  • Hàm count() trong PHP
  • Hàm in_array() trong PHP
  • Lập trình điều khiển DC motor với board mạch Arduino
  • Cú pháp và cách sử dụng toán tử điều kiện trong C++
  • Chương trình tính giai thừa (factorial) trong Java

PHP programming web programming