Kết nối

[PHP] Phần 20: Xử lý form (biểu mẫu) trong PHP

195 lượt xem 
 
Thể loại: Lập trình Web với PHP 

Để 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/index_get.html?name=Dammio&[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.

Dữ liệu POST có thể nhìn được thông qua gói header, xem phần cuối hình.

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.

Bình luận Facebook

1
Để lại bình luận

avatar
1000
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Các tác giả bình luận
Các tác giả bình luận gần đây
  Theo dõi  
mới nhất cũ nhất được bình chọn nhiều nhất
Thông báo của
trackback

[…] [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 […]