Bài 27: Xử lý Form với phương thức GET và POST

Ngày đăng: 2024-04-13 20:14:59

Mục lục:

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

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

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

           4. Phương thức POST là gì?

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

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

              

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à: titoe.net?mail=thehalfheart@gmail.com&domain=titoe.net thì lúc này phía server sẽ nhận được hai giá trị là:

  • Mail: thehalfheart@gmail.com
  • Domain: titoe.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>titoe.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" và method="get"
  • Đối với ô nhập dữ liệu có name="q"
  • Đối với button có name="btn" và 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>titoe.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ữ "titoe" vào rồi nhấn Search thì kết quả như trong hình sau:

 

Search

array

'q'=>string 'titoe'   (Length=)

'btn' => string 'Search'   (Leng=6)

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:

<!DOCTYPE html>

<html>

    <head>

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

 

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

4. Phương thức POST là gì?

Phương thức POST là hình thức client gửi dữ liệu lên server kèm theo dữ liệu và dữ liệu sẽ bị ẩn chứ không hiển thị trên URL như phương thức GET, vì vậy khi xây dựng form lấy thông tin từ user thì ta nên sử dụng phương thức POST vì nó bảo mật hơn.

Ví dụ mình xây dựng form đăng nhập thì mình sẽ sử dụng phương thức POST. Bạn tạo một file tên là post.php và nhập vào đoạn code sau:

 

<!DOCTYPE html>

<html>

    <head>

        <title>titoe.net - xử lý form với POST</title>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>

    <body>

        <h1>titoe.net - ứng dụng đăng nhập</h1>

        <form method="post" action="post.php">

            Username: <input type="text" name="username" value=""/> <br/> <br/>

            Password: <input type="post" name="password" value=""/> <br/> <br/>

            <input type="submit" name="btn" value="Đang Nhập"/>

        </form>

    </body>

</html>

 

Bạn hãy thử nhấn đăng nhập và xem trên URL thì sẽ thấy nó không có bổ sung một query string nao vào cả. Như vậy với phương thức POST thì dữ liệu sẽ được giấu đi.

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

Để lấy dữ liệu từ phương thức POST thì ta sẽ sư dụng biến $_POST, đây là một mảng chứa danh sách tất cả dữ liệu từ client gửi lên bằng phương thức POST.

Quay lại ví dụ trên bạn sửa code lại như sau:

 

<!DOCTYPE html>

<html>

    <head>

        <title>titoe.net - xử lý form với POST</title>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>

    <body>

        <h1>titoe.net - ứng dụng đăng nhập</h1>

        <form method="post" action="post.php">

            Username: <input type="text" name="username" value=""/> <br/> <br/>

            Password: <input type="post" name="password" value=""/> <br/> <br/>

            <input type="submit" name="btn" value="Đang Nhập"/>

        </form>

        <?php

        var_dump($_POST);

        ?>

    </body>

</html>

 

Bạn hãy chạy lại chương trình và nhập vào username là 'titoe.net' và mật khẩu là 'thehalfheart' và xem kết quả.

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

Bây giờ ta xây dựng form đăng nhập hoàn chỉnh nhé. 

Giả sử nếu người dùng nhập tên đăng nhập là titoe.net và mật khẩu là thehalfheart thì ta sẽ thông báo là đăng nhập thành công, ngược lại sẽ thông báo đăng nhập sai.

Bạn sửa lại file post.php với nội dung như sau:

 

<!DOCTYPE html>

<html>

    <head>

        <title>titoe.net - xử lý form với POST</title>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>

    <body>

        <h1>titoe.net - ứng dụng đăng nhập</h1>

        <form method="post" action="post.php">

            Username: <input type="text" name="username" value=""/> <br/> <br/>

            Password: <input type="post" name="password" value=""/> <br/> <br/>

            <input type="submit" name="btn" value="Đang Nhập"/>

        </form>

        <?php

        if ($_POST['btn'])

        {

            // B1: Lấy thông tin

            $username = isset($_POST['username']) ? $_POST['username'] : '';

            $password = isset($_POST['password']) ? $_POST['password'] : '';

             

            // B2: Kiểm tra dữ liệu

            if (!$password || !$username){

                echo 'Bạn chưa nhập đủ thông tin';

            }

            else if ($password != 'thehalfheart' || $username != 'freetuts.net'){

                echo 'Thông tin đăng nhập bị sai';

            }

            else{

                echo 'Đăng nhập thành công!';

            }

        }

        ?>

    </body>

</html>

 

Về bài trước...

                                 Bài tiếp theo...

 

 


Tài liệu lập trình PHP

Bài viết trong cùng chuyên mục

Góc games giải trí



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Tower game

Plapy Bird (NH.Đông)

Vượt chướng ngại vật



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

12739