LÝ THUYẾT
XỬ LÝ FORM
BÀI TẬP
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Validate form bằng PHP

Ngoài validate  form bằng Javascript ra thì chúng ta nên sử dụng PHP để validate nữa bởi chỉ validate bằng Javascript thôi thì chưa đủ độ bảo mật. Nếu người dùng cố tình tắt Javascript thì họ hoàn toàn có thể lách qua được lớp bảo vệ đó của website, nên trong bài viết này mình sẽ hướng dẫn các bạn cách validate form bằng PHP trước khi lưu trữ vào cơ sở dữ liệu.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Sưu tầm các hàm validate trong PHP

Trước khi vào bài thì mình muốn các bạn hãy sưu tầm các hàm kiểm tra dữ liệu vào một file nhé. Ở đây mình có sưu tầm một hàm, bạn có thể tham khảo và sử dụng cho dự án của mình. 

Bạn tạo file validate.php với nội dung như sau:

 

Bài viết này được đăng tại [free tuts .net]

// Kiểm tra định dạng email
function is_email($str) {
    return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}

 

Sau này bạn nên tự mình sưu tầm nhiều hàm hơn nữa nhé.

2. Validate form bằng PHP

Để validate form bằng PHP thì chúng ta phải thông qua hai công đoạn, công đoạn thứ nhất là lấy dữ liệu và kiểm tra dữ liệu, công đoạn thứ hai là hiển thị thông báo lỗi và hiển thị dữ liệu mà người dùng đã nhập để họ khỏi mất công nhập lại.

Mình sẽ làm một ví dụ là form liên hệ nhé các bạn. Bạn hãy tạo file contact.php và nhập nội dung HTML sau:

 

<!DOCTYPE html>
<html>
    <head>
        <title>Freetuts.net - Form liên hệ</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <?php
        // Code PHP xử lý validate
        if (!empty($_POST['contact_action']))
        {
            
        }
        ?>
        <h1>freetuts.net - contact form</h1>
        <form method="post" action="contact.php">
            <table cellspacing="0" cellpadding="5">
                <tr>
                    <td>Tên của bạn</td>
                    <td><input type="text" name="fullname" id="fullname" value=""/></td>
                </tr>
                <tr>
                    <td>Email của bạn</td>
                    <td><input type="text" name="email" id="email" value=""/></td>
                </tr>
                <tr>
                    <td>Nội dung liên hệ</td>
                    <td><textarea id="content" name="content"></textarea></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" name="contact_action" value="Gửi liên hệ"/></td>
                </tr>
            </table>
        </form>
    </body>
</html>

 

Giao diện chạy lên sẽ như sau:

validate form php png

Bây giờ mình sẽ thực hiện hai công đoạn trên nhé.

Công đoạn 1: Kiểm tra dữ liệu

Thứ nhất mình sẽ code PHP validate trong đoạn code <?php ?>, thứ hai mình không lưu vào database mà sẽ comment vị trí sẽ code để lưu cho các bạn hiểu thôi nhé.

 

<?php
// Code PHP xử lý validate
$error = array();
$data = array();
if (!empty($_POST['contact_action']))
{
    // Lấy dữ liệu
    $data['fullname'] = isset($_POST['fullname']) ? $_POST['fullname'] : '';
    $data['email'] = isset($_POST['email']) ? $_POST['email'] : '';
    $data['content'] = isset($_POST['content']) ? $_POST['content'] : '';

    // Kiểm tra định dạng dữ liệu
    require('./validate.php');
    if (empty($data['fullname'])){
        $error['fullname'] = 'Bạn chưa nhập tên';
    }

    if (empty($data['email'])){
        $error['email'] = 'Bạn chưa email';
    }
    else if (!is_email($data['email'])){
        $error['email'] = 'Email không đúng định dạng';
    }

    if (empty($data['content'])){
        $error['content'] = 'Bạn chưa nhập nội dung';
    }

    // Lưu dữ liệu
    if (!$error){
        echo 'Dữ liệu có thể lưu trữ';
        // Code lưu dữ liệu tại đây
        // ...
    }
    else{
        echo 'Dữ liệu bị lỗi, không thể lưu trữ';
    }
}
?>

 

Công đoạn 2: Hiên thị lỗi và dữ liệu

Chúng ta có hai biến cục bộ đó là biến $data$error, dựa vào hai biến này chúng ta show thông tin ra như sau:

 

<form method="post" action="contact.php">
    <table cellspacing="0" cellpadding="5">
        <tr>
            <td>Tên của bạn</td>
            <td>
                <input type="text" name="fullname" id="fullname" value="<?php echo isset($data['fullname']) ? $data['fullname'] : ''; ?>"/>
                <?php echo isset($error['fullname']) ? $error['fullname'] : ''; ?>
            </td>
        </tr>
        <tr>
            <td>Email của bạn</td>
            <td>
                <input type="text" name="email" id="email" value="<?php echo isset($data['email']) ? $data['email'] : ''; ?>"/>
                <?php echo isset($error['email']) ? $error['email'] : ''; ?>
            </td>
        </tr>
        <tr>
            <td>Nội dung liên hệ</td>
            <td>
                <textarea id="content" name="content"><?php echo isset($data['content']) ? $data['content'] : ''; ?></textarea>
                <?php echo isset($error['content']) ? $error['content'] : ''; ?>
            </td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" name="contact_action" value="Gửi liên hệ"/></td>
        </tr>
    </table>
</form>

 

Và đây là toàn bộ nội dung của file contact.php.

 

<!DOCTYPE html>
<html>
    <head>
        <title>Freetuts.net - Form liên hệ</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <?php
        // Code PHP xử lý validate
        $error = array();
        $data = array();
        if (!empty($_POST['contact_action']))
        {
            // Lấy dữ liệu
            $data['fullname'] = isset($_POST['fullname']) ? $_POST['fullname'] : '';
            $data['email'] = isset($_POST['email']) ? $_POST['email'] : '';
            $data['content'] = isset($_POST['content']) ? $_POST['content'] : '';

            // Kiểm tra định dạng dữ liệu
            require('./validate.php');
            if (empty($data['fullname'])){
                $error['fullname'] = 'Bạn chưa nhập tên';
            }

            if (empty($data['email'])){
                $error['email'] = 'Bạn chưa email';
            }
            else if (!is_email($data['email'])){
                $error['email'] = 'Email không đúng định dạng';
            }

            if (empty($data['content'])){
                $error['content'] = 'Bạn chưa nhập nội dung';
            }

            // Lưu dữ liệu
            if (!$error){
                echo 'Dữ liệu có thể lưu trữ';
                // Code lưu dữ liệu tại đây
                // ...
            }
            else{
                echo 'Dữ liệu bị lỗi, không thể lưu trữ';
            }
        }
        ?>
        <h1>freetuts.net - contact form</h1>
        <form method="post" action="contact.php">
            <table cellspacing="0" cellpadding="5">
                <tr>
                    <td>Tên của bạn</td>
                    <td>
                        <input type="text" name="fullname" id="fullname" value="<?php echo isset($data['fullname']) ? $data['fullname'] : ''; ?>"/>
                        <?php echo isset($error['fullname']) ? $error['fullname'] : ''; ?>
                    </td>
                </tr>
                <tr>
                    <td>Email của bạn</td>
                    <td>
                        <input type="text" name="email" id="email" value="<?php echo isset($data['email']) ? $data['email'] : ''; ?>"/>
                        <?php echo isset($error['email']) ? $error['email'] : ''; ?>
                    </td>
                </tr>
                <tr>
                    <td>Nội dung liên hệ</td>
                    <td>
                        <textarea id="content" name="content"><?php echo isset($data['content']) ? $data['content'] : ''; ?></textarea>
                        <?php echo isset($error['content']) ? $error['content'] : ''; ?>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" name="contact_action" value="Gửi liên hệ"/></td>
                </tr>
            </table>
        </form>
    </body>
</html>

 

Chạy lên nếu bạn nhập dữ liệu bị lỗi thì sẽ như hình sau:

validate form php advanced png

Thật tuyệt vời =))

3. Lời kết

Vậy là mình đã giới thiệu xong cách sử dụng PHP để validate dữ liệu của form, hy vọng bài này sẽ giúp hữu ích với các bạn. Bài tiếp theo mình sẽ hướng dẫn các bạn cách kết hợp validate cả Javascript lẫn PHP để giúp website bảo mật hơn.

Danh sách file tải về

Tên file tải về Pass giải nén
Tải bài học định dạng PDF freetuts.net hoặc gameportable.net

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top