Bài 02: Xử lý form với phương thức GET

DEMO

Trong bài này mình sẽ hướng dẫn các bạn khái niệm phương thức GET là gì và một số vấn đề quan trọng liên quan đến phương thức GET trong PHP. Và trước khi đọc bài này thì bạn phải xem bài phương thức GET và POST trong PHP đã nhé.

1. Phương thức GET là gì?

Phương thức GET là hình thức client gửi dữ liệu lên server bằng cách bổ sung các tham số đằng sau URL mà ta hay gọi là Query String. Ví dụ ta có URL là: freetuts.net?mail=thehalfheart@gmail.com&domain=freetuts.net thì lúc này phía server sẽ nhận được hai giá trị là:

  • Mail: thehalfheart@gmail.com
  • Domain: freetuts.net

Chính vì việc hiển thị dữ liệu trên URL một cách lộ liễu như vậy nên đối với những dữ liệu có tính bảo mật thì ta không thể sử dụng phương thức GET được. Thông thường những hành động nào có làm thay đổi database như thao tác thêm, xóa, sửa thì ta không nên sử dụng phương thức GET, còn những hành động nào không làm thay đổi database như thao tác lấy danh sách, tìm kiếm thì ta có thể sử dụng.

Ví dụ: Sử dụng phương thức GET cho form tìm kiếm

Bạn tạo một file tên là get.php với nội dung như sau:

<!DOCTYPE html>
<html>
    <head>
        <title>Freetuts.net - xử lý form với GET</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form method="get" action="get.php">
            <input type="text" name="q" value=""/>
            <input type="submit" name="btn" value="Search"/>
        </form>
    </body>
</html>

Bạn cần chú ý một số điều như sau:

  • Đối với form mình để action="get.php"method="get"
  • Đối với ô nhập dữ liệu có name="q"
  • Đối với button có name="btn"value="Search"

Bạn chạy file này lên sau đó nhập dữ liệu tìm kiếm vào rồi nhấn button Search thì lúc này giao diện và URL sẽ như sau:

Như vậy phương thức GET trong form thực chất là sự chuyển hướng trang kèm theo việc bổ sung phần query string cho URL. Như ví dụ trên khi ta tạo form với phương thức GET thì dữ liệu sẽ đưa lên URL với key chính là tên của ô input và value chính là dữ liệu của ô input. 

2. Lấy dữ liệu từ phương thức GET

Để lấy dữ liệu từ phương thức GET thì ta phải sử dụng biến $_GET, đây là biến toàn cục lưu trữ các dữ liệu từ client gửi lên server thông qua phương thức GET.

Quay lại ví dụ ở trên thì bạn thay đổi mã code cho file get.php như sau:

<!DOCTYPE html>
<html>
    <head>
        <title>Freetuts.net - xử lý form với GET</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form method="get" action="get.php">
            <input type="text" name="q" value=""/>
            <input type="submit" name="btn" value="Search"/>
        </form>
        <?php 
        var_dump($_GET);
        ?>
    </body>
</html>

Bây giờ bạn hãy chạy lại file get.php thì dễ dàng thấy biến $_GET lúc này là một mảng rổng. Bây giờ bạn nhập dòng chữ "freetuts" vào rồi nhấn Search thì kết quả như trong hình sau:

Ok như vậy q chính là tên của ô input nhập dữ liệu, btn chính là tên của button.

3. Một ví dụ với phương thức GET

Bây giờ mình sẽ viết một ứng dụng nhập vào năm sinh của bạn và tính ra số tuổi hiện tại. Ta sẽ sử dụng lại file get.php luôn nhé.

Trước khi giải bài này thì mình phải phân tích thuật toán đã nhé. Như đề vài ta nhập vào năm sinh thì muốn biết số tuổi ta chỉ cần lấy năm hiện tại trừ đi số năm sinh mà người dùng nhập vào là ra. Để lấy năm hiện tại thì ta dùng hàm xử lý ngày tháng trong PHP đó là hàm date().

Bước 1: Tạo form HTML

Bạn thay đổi nội dung cho file get.php như sau: XEM DEMO

<!DOCTYPE html>
<html>
    <head>
        <title>Freetuts.net - xử lý form với GET</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <h1>freetuts.net - ứng dụng tìm năm sinh</h1>
        <form method="get" action="get.php">
            <input type="text" name="year" value=""/>
            <input type="submit" name="btn" value="Tìm Tuổi"/>
        </form>
        <?php 
        // Code PHP xử lý tại đây
        ?>
    </body>
</html>

Giao diện sẽ như hình sau:

Bước 2: Code PHP tìm số tuổi

Bạn để ý trong form có sử dụng phương thức là GET và có button submit có tên là btn, vì vậy để kiểm tra người dùng click vào nút submit thì ta chỉ cần sử dụng đoạn code sau:

if (!empty($_GET['btn'])){
    // Người dùng đã click vào button
    // Đoạn code tính tuổi tại đây
    // ...
}

Ok như vậy đây là toàn bộ nội dung PHP của ứng dụng tìm tuổi này.

if (!empty($_GET['btn'])){
    // Bước 1: Lấy thông tin
    $year = isset($_GET['year']) ? (int)$_GET['year'] : 0;

    // Bước 2: Lấy năm hiện tại
    $current_year = date('Y');

    // Bước 2: Kiểm tra năm sinh hợp lệ hay không, nếu không thì thông báo
    if ($year <= 0){
        echo 'Năm sinh bạn nhập không hợp lệ';
    }
    else if ($year > $current_year){
        echo 'Năm sinh bạn nhập lớn hơn năm hiện tại';
    }
    else{
        echo 'Số tuổi của bạn là ' . ($current_year - $year);
    }
}

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

<!DOCTYPE html>
<html>
    <head>
        <title>Freetuts.net - xử lý form với GET</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <h1>freetuts.net - ứng dụng tìm năm sinh</h1>
        <form method="get" action="get.php">
            <input type="text" name="year" value=""/>
            <input type="submit" name="btn" value="Tìm Tuổi"/>
        </form>
        <?php 
            if (!empty($_GET['btn'])){
                // Bước 1: Lấy thông tin
                $year = isset($_GET['year']) ? (int)$_GET['year'] : 0;

                // Bước 2: Lấy năm hiện tại
                $current_year = date('Y');

                // Bước 2: Kiểm tra năm sinh hợp lệ hay không, nếu không thì thông báo
                if ($year <= 0){
                    echo 'Năm sinh bạn nhập không hợp lệ';
                }
                else if ($year > $current_year){
                    echo 'Năm sinh bạn nhập lớn hơn năm hiện tại';
                }
                else{
                    echo 'Số tuổi của bạn là ' . ($current_year - $year);
                }
            }
        ?>
    </body>
</html>

Kết quả như hình dưới đây là mình nhập năm sinh 1990 nên số tuổi của mình là 26.

Nếu bạn vẫn chưa hiểu  $_GET['btn'] và $_GET['year'] là gì thì hãy xem hình sau nhé.

4. Lời kết

Qua bài này mình đã giới thiệu khái niệm phương thức GET là gì và cách xử lý form với phương thức GET trong PHP. Đây là kiến thức rất căn bản và minh cũn đã đề cập trong series php căn bản rồi, tuy nhiên vì nhiều bạn chưa nắm được quy trình làm việc của form nên mình tạo ra series này để giúp các bạn hiểu rõ vấn đề hơn.

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Group Facebook để được hỗ trợ nhanh nhất.