Mục lục bài viết

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.

Tác giả

Vinh Lê

Giảng viên CNTT, chia sẻ tutorial lập trình & phần cứng tại Góc Học IT. Hơn 500 bài viết hướng dẫn từ cơ bản đến nâng cao.

Gợi ý tiếp theo

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

Học tiếp