Xử Lý Form trong PHP
Biến $_GET
và $_POST
được sử dụng để thu thập dữ liệu từ form.
Form PHP - HTML Cơ Bản
Ví dụ
Trình bày một form HTML cơ bản với 2 ô input
và một nút submit
:
<html>
<body>
<form action="xinchao.php" method="post">
Ten: <input type="text" name="ten"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
[Ví dụ 1:](https://www.codehub.vn/1991/challenges/860)
Khi người dùng điền vào form trên và ấn vào nút submit
, dữ liệu được gửi đi và được xử lý thành file PHP bằng phương thức HTTP POST, file có tên là "xinchao.php".
Để hiện thị dữ liệu đã gửi bạn có thể echo
các biến.
File "xinchao.php" như sau:
<html>
<body>
Xin chao <?php echo $_POST["ten"]; ?><br>
Dia chi email cua ban la: <?php echo $_POST["email"]; ?>
</body>
</html>
[Ví dụ 2:](https://www.codehub.vn/1991/challenges/861)
Dữ liệu có thể được hiển thị như sau:
Xin chao Codehub
Dia chi email cua ban la: codehub.vn@gmail.com
Có thể có cùng kết quả khi sử dụng phương thức HTTP GET:
Ví dụ:
<html>
<body>
<form action="xinchao_get.php" method="get">
Ten: <input type="text" name="ten"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
[Ví dụ 3: get](https://www.codehub.vn/1991/challenges/862)
và file "xinchao_get.php" như sau:
<html>
<body>
Xin chao <?php echo $_GET["name"]; ?><br>
Dia chi email cua ban la: <?php echo $_GET["email"]; ?>
</body>
</html>
[Ví dụ 4: get](https://www.codehub.vn/1991/challenges/863)
Đoạn code ở trên khá đơn giản. Tuy nhiên, để tao thành một form hoàn chỉnh và có bảo mật thì vẫn chưa đủ. Bạn cần form validation
để bảo vệ câu lệnh khỏi các mã độc.
Chú ý: Bài học này không có form validation
mà chỉ hướng dẫn cách gửi và truy xuất dữ liệu. Tuy nhiên, ở những bài học tiếp theo sẽ hướng dẫn form validation
để bảo vệ form khỏi hackers và spammers!
GET
và POST
Cả GET
và POST
đều tạo ra mảng. (Ví dụ mảng(key1
=> giaTri1
, key2
=> giaTri2
, key3
=> giaTri3
, ...)). Các key
/giaTri
tồn tại theo cặp. Trong đó key
là tên của trường trong form, còn giaTri
là dữ liệu do người dùng điền vào thẻ input
.
GET
và POST
cũng được xem như là $_GET
và $_POST
. Chúng là những superglobals
, nghĩa là chúng luôn được truy cập trong bất kể phạm vi nào, và bạn có thể truy cập chúng từ bất kỳ hàm, lớp hay một file nào đó mà không cần làm thêm thao tác phụ nào khác.
$_GET
là một mảng các biến được gửi đến tập lệnh hiên tại thông qua URL.
$_POST
là một mảng các biến được gửi đến tập lệnh hiên tại thông qua phương thức HTTP POST.
Khi Nào Sử Dụng GET
?
Tất cả mọi người có thể thấy dữ liệu được gửi từ form khi dùng phương thức GET
(tất cả tên các biến, giá trị được hiển thị trên URL). GET
cũng giới hạn dữ liệu gửi đi, khoảng 2000 kí tự. Tuy nhiên, vì các biến hiển thị trên URL nên bạn có thể đánh dấu trang. Việc này rất hữu dụng trong một số trường hợp.
GET
có thể được sử dụng cho việc gửi những dữ liệu không nhạy cảm.
Chú ý: KHÔNG nên sử dụng GET
vào việc gửi mật khẩu hay các thông tin nhạy cảm khác!
Khi Nào Dùng POST
?
Dữ liệu được gửi từ form với phương thức POST
thì không hiển thị với người dùng khác (tất cả tên hay giá trị được nhúng trong phần body của HTTP) và cũng không giới hạn lượng dữ liệu gửi tới.
Hơn nữa POST
hỗ trợ chức năng nâng cao như hỗ trợ như upload nhiều file lên server.
Tuy nhiên, bởi vì các biến không được hiển thị trên URL nên không thể đánh dấu trang.
Chú ý: Các Dev thích sử dụng POST
để gửi dữ liệu từ form hơn.
Bài học tiếp theo, hãy cùng xem làm thế nào để xử lý form PHP một cách an toàn!
cài google recaptcha là hết bị spam
Hay :)))