Kiểm tra (validation) dữ liệu trong html form với PHP

Đây là bài 39/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 validation dữ liệu trong html form với 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. Xây dựng html form đơn giản

Giả sử, chúng ta cần xây dựng một html form để user nhập vào nội dung comment như bên dưới.

<!DOCTYPE HTML>  
<html>
<head>
    <title>Please, give some comments for gochocit.com!</title>
    <style>
        .error {color: #FF0000;}
    </style>
</head>
<body>  
<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">
  <span class="error">*</span>
  <br><br>
  E-mail: <input type="text" name="email">
  <span class="error">*</span>
  <br><br>
  Website: <input type="text" name="website">
  <span class="error"></span>
  <br><br>
  Comment: <textarea name="comment" rows="5" cols="40"></textarea>
  <span class="error">*</span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>
</body>
</html>
Ví dụ required data trong html form

Trong ví dụ trên, các field Name, E-mail, Comment là bắt buộc, không được để trống. Field Website có thể để trống.

2. Kiểm tra (validatation) dữ liệu trong html form

Khi nhấn nút Submit, chúng ta phải kiểm tra các field có thỏa ràng buộc hay không. Nếu không thỏa ràng buộc thì phải xuất thông báo lỗi. Chúng ta sẽ sử dụng PHP script để kiểm tra (validation) các field dữ liệu trong html form.

<!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"]);
  }
  
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
  }
    
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }

  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">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  E-mail: <input type="text" name="email">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
  Website: <input type="text" name="website">
  <br><br>
  Comment: <textarea name="comment" rows="5" cols="40"></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 data trong html form với PHP

Khi nhấn nút Submit, dữ liệu của html form sẽ được gửi về chính file index.php. Đó là vì action của html form thì chúng ta sử dụng htmlspecialchars($_SERVER["PHP_SELF"]). Sau đó, PHP script giúp kiểm tra dữ liệu nào không thỏa yêu cầu thì sẽ xuất lỗi. Còn dữ liệu nào thỏa yêu cầu thì sẽ xuất giá trị ra.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Xử lý html form với PHPKiểm tra (validation) email và url 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) dữ liệu trong html form với PHP

  1. I was researching on the web for some info since yesterday night and I ultimately found what i was looking for! This is a great blog by the way, but it looks a little hard to see from my att phone.

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