Xử lý biểu mẫu PHP

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

PHP - Một biểu mẫu HTML đơn giản

Dưới đây là ví dụ minh họa một biểu mẫu HTML đơn giản, nó chứa hai trường nhập liệu và một nút gửi:

Ví dụ

<html>
<body>
<form action="welcome.php" method="post">
Tên: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>

Chạy ví dụ

Khi người dùng điền biểu mẫu này và nhấn nút gửi, dữ liệu biểu mẫu sẽ được gửi đến tệp PHP có tên "welcome.php" để xử lý. Dữ liệu biểu mẫu được gửi bằng phương pháp HTTP POST.

Nếu bạn muốn hiển thị dữ liệu đã gửi, bạn có thể đơn giản là xuất ra (echo) tất cả các biến. Tệp "welcome.php" là như thế này:

<html>
<body>
Chào <?php echo $_POST["name"]; ?><br>
Địa chỉ email của bạn là: <?php echo $_POST["email"]; ?>
</body>
</html>

Kết quả xuất ra:

Chào Bill
Địa chỉ email của bạn là Bill.Gates@example.com

Bạn cũng có thể nhận được kết quả tương tự bằng phương pháp HTTP GET:

Ví dụ

<html>
<body>
<form action="welcome_get.php" method="get">
Tên: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>

Chạy ví dụ

"welcome_get.php" là như thế này:

<html>
<body>
Chào <?php echo $_GET["name"]; ?><br>
Địa chỉ email của bạn là: <?php echo $_GET["email"]; ?>
</body>
</html>

Mã trên rất đơn giản. Tuy nhiên, nội dung quan trọng nhất đã bị bỏ sót. Bạn cần xác thực dữ liệu biểu mẫu để防止 lỗ hổng trong script.

Lưu ý:Lưu ý an toàn khi xử lý biểu mẫu PHP!

Trang này không chứa bất kỳ chương trình xác thực biểu mẫu nào, nó chỉ cho chúng ta biết cách gửi và nhận dữ liệu biểu mẫu.

Nhưng các chương sau sẽ giải thích cách tăng cường bảo mật cho biểu mẫu PHP! Việc thực hiện xác thực bảo mật thích hợp cho biểu mẫu rất quan trọng để chống lại các cuộc tấn công của hacker và thư rác!

GET vs. POST

GET và POST đều tạo ra mảng (ví dụ, array( key => value, key2 => value2, key3 => value3, ...)). Mảng này chứa các cặp khóa/giá trị, trong đó khóa là tên của các điều khiển biểu mẫu và giá trị là dữ liệu đầu vào từ người dùng.

GET và POST được coi là $_GET và $_POST. Chúng là biến toàn cục, điều này có nghĩa là việc truy cập chúng không cần xem xét đến phạm vi - không cần bất kỳ mã đặc biệt nào, bạn có thể truy cập chúng từ bất kỳ hàm, lớp hoặc tệp nào.

$_GET là mảng biến được truyền qua tham số URL đến vân bản hiện tại.

$_POST là mảng biến được truyền qua HTTP POST đến vân bản hiện tại.

Khi nào sử dụng GET?

Thông tin gửi từ biểu mẫu bằng phương pháp GETngười nào cũng nhìn thấy(Tất cả tên biến và giá trị đều hiển thị trong URL)。GET có giới hạn về số lượng thông tin được gửi. Giới hạn khoảng 2000 ký tự. Nhưng, do biến hiển thị trong URL, việc thêm trang vào dấu trang cũng dễ dàng hơn.

GET có thể được sử dụng để gửi dữ liệu không nhạy cảm.

Chú ý:Chắc chắn không nên sử dụng GET để gửi mật khẩu hoặc thông tin nhạy cảm khác!

Khi nào sử dụng POST?

Thông tin gửi từ biểu mẫu bằng phương pháp POSTkhông nhìn thấy bởi người khác(Tất cả tên/giá trị sẽ được chèn vào phần thân của yêu cầu HTTP),và cũng có giới hạn về số lượng thông tin được gửi.Không giới hạn.

Ngoài ra, POST hỗ trợ các chức năng cao cấp, chẳng hạn như multi-part binary input khi tải tệp lên máy chủ.

Nhưng, do biến không hiển thị trong URL, cũng không thể thêm trang vào dấu trang.

Lưu ý:Phát triển viên ưa thích POST để gửi dữ liệu biểu mẫu.

Hãy cùng xem cách xử lý an toàn biểu mẫu PHP!