xử lý biểu mẫu trong php

Các biến superglobals như $_GET$_POST thường được sử dụng để thu thập dữ liệu trong form 

Biểu mẫu đơn giản


Ví dụ: Form đơn giản hiển thị một biểu mẫu HTML với 2 trường nhập dữ liệu và nút submit.

Ví dụ

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

Xem kết quả

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

Để hiển thị dữ liệu đã gửi, chúng ta chỉ cần tạo một file php có tên là "welcome.php" như sau:

Ví dụ

<html>
<body>
<p>Welcome <?php echo $_POST['name']?></p>
<p>Địa chỉ email của bạn là <?php $_POST['email']?></p>  
</body>
</html>

Kết quả sẽ là:

Welcome ...

Địa chỉ email của bạn là ...

Kết quả cũng tương tự khi chúng ta sử dụng phương thức HTTP GET

Ví dụ

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

Xem kết quả

Để hiển thị dữ liệu đã gửi theo phương thức GET, bạn chỉ cần tạo một file php có tên là "welcome_get.php" như sau:

Ví dụ

<html>
<body>
<p>Welcome <?php echo $_GET['name']?></p>
<p>Địa chỉ email của bạn là <?php $_GET['email']?></p>  
</body>
</html>

Đoạn mã trên khá đơn giản. Tuy nhiên, điều quan trọng nhất vẫn còn thiếu, là chúng ta cần xác thực dữ liệu biểu mẫu để bảo vệ tập lệnh của mình khỏi mã độc.

Hãy nghĩ đến sự AN TOÀN khi xử lý các biểu mẫu PHP!

Ví dụ trên không chứa bất kỳ yêu cầu xác thực biểu mẫu nào, nó chỉ hiển thị cách bạn có thể gửi và truy xuất dữ liệu biểu mẫu.

Tuy nhiên, các ví dụ tiếp theo sẽ chỉ ra cách xử lý các biểu mẫu PHP với lưu ý đến tính bảo mật! Việc xác nhận đúng cách dữ liệu biểu mẫu là điều quan trọng để bảo vệ biểu mẫu của bạn khỏi tin tặc và những kẻ gửi thư rác!

$_GET so với $_POST


Cả GETPOST đều tạo ra một mảng (ví dụ: mảng (key1 => value1, key2 => value2, key3 => value3, ...)). Mảng này chứa các cặp khóa/ giá trị, trong đó các khóa là tên của các thuộc tính (name ...) biểu mẫu và giá trị là dữ liệu đầu vào nhập từ người dùng.

Cả GETPOST đều được coi là $ _GET$ _POST. Đây là những superglobals, có nghĩa là chúng luôn có thể truy cập được, bất kể phạm vi - và chúng ta có thể truy cập chúng từ bất kỳ hàm, lớp hoặc tệp nào mà không cần phải làm bất cứ điều gì đặc biệt.

$ _GET là 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 sử dụng $_GET


Thông tin được gửi từ biểu mẫu theo phương thức GET được hiển thị cho tất cả mọi người (tất cả các tên biến và giá trị được hiển thị trong URL). GET cũng có giới hạn về số lượng thông tin cần gửi. Giới hạn là khoảng 2000 ký tự. Tuy nhiên, vì các biến được hiển thị trong URL, nên có thể đánh dấu 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.

Lưu ý: 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 sử dụng $_POST


Thông tin được gửi từ biểu mẫu có phương thức POSTẩn đối với những người khác (tất cả các tên / giá trị đều được nhúng trong phần nội dung của yêu cầu HTTP) và không có giới hạn về lượng thông tin cần gửi.

POST hỗ trợ chức năng nâng cao như hỗ trợ đầu vào nhị phân nhiều phần 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ị trong URL nên không thể đánh dấu trang.

Các nhà phát triển web thích POST để gửi dữ liệu biểu mẫu.