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