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.
1. Kiểm tra (validation) name với PHP
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>
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
I am in fact grateful to the holder of this web page who has shared this impressive article at at this place.