Hướng dẫn dùng gmail validation trong 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.

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>

Hướng dẫn dùng gmail validation trong 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

  • Lập trình giao tiếp cảm biến LDR với board mạch Arduino
  • Dòng (stream) là gì? Tập tin (file) và phân loại tập tin trong lập trình
  • Khái niệm lớp cơ sở ảo trong lập trình hướng đối tượng với C++
  • Cấu trúc dữ liệu dạng cây là gì? Đặc điểm của cây nhị phân (Binary Tree)
  • Khái niệm hàm (function) trong lập trình và minh họa với C++

PHP programming web programming