Xử lý form với phương thức GET
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ài viết này được đăng tại [free tuts .net]
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"
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>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.
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 |