By GokiSoft.Com| 15:31 21/06/2020|
Tài Liệu PHP

PHP Form Handling - Xử lý biểu mẫu

Các biên PHP superglobals $_GET và $_POST được sử dụng để thu thập form data (Dữ liệu biểu mẫu).


PHP - Một form HTML cơ bản

Ví dụ dưới đây hiển thị một form HTML đơn giản với hai trường input và submit button:

Ví dụ

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

Khi người dùng điền vào form trên và nhấp submit, form data được gửi để xử lý trong tệp PHP có tên "welcome.php". Form data được gửi bằng phương thức HTTP POST.

Để hiển thị dữ liệu đã gửi, bạn chỉ cần echo các biến ra. File "welcome.php" như sau:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

Dữ liệu được xuất ra sẽ như sau:

Welcome John
Your email address is john.doe@example.com

Kết quả tương tự đối với phương pháp HTTP GET:

Ví dụ

<html>
<body>

<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

và file "welcome_get.php" sẽ như sau:

<html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>

</body>
</html>

Đoạn code trên khá đơn giản. Tuy nhiên, điều quan trọng nhất bị thiếu. Đó là bạn cần validate dữ liệu biểu mẫu.

Bạn cần quan tâm đến vấn đề bảo mật khi xử lý PHP form!

Form trong trang này không hề được validate, nó chỉ gửi và lấy dữ liệu biểu mẫu.

Tuy nhiên, các trang tiếp theo sẽ chỉ ra cách xử lý các biểu mẫu PHP có tính bảo mật! Xác thực hợp lệ dữ liệu biểu mẫu là rất quan trọng để bảo vệ biểu mẫu của bạn khỏi tin tặc (hackers) và kẻ gửi thư rác (spammers)!


GET vs. POST

Cả hai phương thức GET và POST tạo một mảng (vd. array( key1 => value1, key2 => value2, key3 => value3, ...)). Mảng này gồm các cặp key/value, với các key là các tên của các form control và các value là giá trị mà người dùng điền vào các trường input.

Cả hai phương thức GET và POST được coi là $_GET và $_POST. Chúng là các biến superglobal, có nghĩa là chúng luôn có thể truy cập, bất kể phạm vi - và bạn có thể truy cập chúng từ bất kỳ hàm nào, class hoặc file.

$_GET à một mảng các biến được truyền cho tập lệnh hiện tại thông qua các tham số URL.

$_POST là một mảng các biến được truyền cho tập lệnh hiện tại thông qua phương thức HTTP POST.


Khi nào dùng GET?

Thông tin được gửi từ một biểu mẫu với phương thức GET luôn hiển thị đối với mọi người (tất cả tên và giá trị của biến được hiển thị trên thanh URL). GET cũng có giới hạn về lượng thông tin cần gửi. Giới hạn là vào khoảng 2000 ký tự. Tuy nhiên, vì các biến và giá trị của chúng được hiển thị trên URL, có thể đánh dấu (bookmark) trang. Điều này có thể hữu ích trong một số trường hợp.

GET có thể được sử dụng để gửi dữ liệu không nhạy cảm, không cần bảo mật.

Note: GET KHÔNG BAO GIỜ được sử dụng để gửi mật khẩu hoặc thông tin nhạy cảm khác!


Khi nào dùng POST?

Thông tin được gửi từ một biểu mẫu với phương thức POST thì không hiển thị (tất cả names/values được nhúng trong body của HTTP request) and has no limits on the amount of information to send.

Ngoài ra, POST hỗ trợ chức năng nâng cao như hỗ trợ đầu vào multi-part binary trong khi tải tệp lên máy chủ.

Tuy nhiên, vì các biến không được hiển thị trên URL, nên không thể đánh dấu trang.

Các developer thường sử dụng POST để gửi form data.

Tiếp theo, hãy xem cách để xử lý các biểu mẫu PHP một cách an toàn và bảo mật!