Để lấy dữ liệu từ 1 form trong PHP, bạn có thể dùng 2 biến dạng toàn cục là $_GET và $POST.
Ví dụ 1 form đơn giản
Ví dụ sau thể hiện 1 form HTML đơn giản với 2 trường nhập liệu và 1 nút nhấn submit. Tạo trang tên là index.html với nội dung sau.
<html> <body> <form action="dammio.php" method="post"> Tên: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form> </body </html>
Trong ví dụ trên, khi người dùng điền vào thông tin và nhấn nút submit, dữ liệu form sẽ được gửi đến tập tin dammio.php để xử lý. Điều này là do thuộc tính action=”dammio.php” thiết lập trang xử lý, bạn có thể để action=”” tức là trang chứa form này xử lý (trang index.html trong ví dụ). Hơn nữa, dữ liệu gửi đến form thông qua phương thức HTTP POST.
Để hiển thị dữ liệu từ form của trang index.html, ở trang dammio.php cùng thư mục. Bạn chỉ cần dùng lệnh echo để hiển thị như sau.
<html> <body> Xin chào <?php echo $_POST["name"]; ?><br> Địa chỉ email của bạn là: <?php echo $_POST["email"]; ?> </body> </html>
Tương tự, bạn cũng có thể dùng phương thức HTTP GET với form trên như sau. Tạo 1 trang tên index_get.html với nội dung.
<html> <body> <form action="dammio_get.php" method="get"> Tên: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form> </body </html>
Sau đó tạo trang dammio_get.php để lấy dữ liệu form bằng phương thức GET.
<html> <body> Xin chào <?php echo $_GET["name"]; ?><br> Địa chỉ email của bạn là: <?php echo $_GET["email"]; ?> </body> </html>
Khi nào dùng GET, khi nào dùng POST
Ở ví dụ trên, bạn có thể thấy có 2 cách để lấy dữ liệu form là GET và POST. Vậy bạn sẽ băn khoăn là khi nào dùng GET, và khi nào dùng POST. Như bài viết trước, khi 1 form dùng POST thì dữ liệu sẽ được submit ngầm, còn 1 form dùng GET thì dữ liệu khi submit sẽ hiển thị trên URL.
Ví dụ URL của 1 form khi dùng GET:
http://localhost:8080/[email protected]
Từ đó, bạn có thể thấy, POST bảo mật hơn GET khi submit dữ liệu người dùng. Nếu bạn submit không quá quan trọng thì hãy dùng GET. Còn nếu bạn muốn bảo mật thông tin, như form nhập mật khẩu thì dùng POST. Cả GET và POST đều tạo ra 1 mảng (array( key => value, key2 => value2, key3 => value3, …)) chứa cặp khóa, giá trị là tên của từng phần tử trong form và giá trị tương ứng.
Vấn đề quan trọng là bạn phải kiểm tra dữ liệu trả về server có chứa đoạn mã độc hay không, phần này bạn có thể dùng 1 số hàm chẳng hạn như htmlspecialchars() để lọc ký tự mã HTML đặc biệt nhằm hạn chế mã độc. Bạn cũng có kiểm tra độ dài dữ liệu, loại dữ liệu, IP submit, … để tăng cường khả năng bảo mật.
Nếu ứng dụng web của bạn chỉ dùng HTTP thì rất tiếc, ngay cả khi bạn dùng POST thì form cũng không thể bảo mật. Một số bài viết đã chỉ ra cách có thể dùng trình duyệt để xem dữ liệu form submit dạng POST. Vì vậy cách tốt nhất hãy dùng HTTPS.
Kết luận
Bài viết đã hướng dẫn bạn cách tạo 1 form đơn giản và lấy dữ liệu form này bằng 2 biến toàn cục $_GET và $_POST trong PHP. Mời bạn tiếp tục theo dõi bài tiếp theo để học được cách tạo form chi tiết và đa dạng hơn.
- APA:
Dammio. (2019). [PHP] Phần 20: Xử lý form (biểu mẫu) trong PHP. https://www.dammio.com/2019/01/27/php-phan-20-xu-ly-form-bieu-mau-trong-php.
- BibTeX:
@misc{dammio,
author = {Dammio},
title = {[PHP] Phần 20: Xử lý form (biểu mẫu) trong PHP},
year = {2019},
url = {https://www.dammio.com/2019/01/27/php-phan-20-xu-ly-form-bieu-mau-trong-php},
urldate = {2024-10-09}
}
[…] [PHP] Phần 20: Xử lý form (biểu mẫu) trong PHP – 27 tháng 01, 2019 lúc 11:57:51 Sáng […]