Phương thức Post và Get trong PHP

Trong PHP có hai phương thức được sử dụng để truyền dữ liệu từ Client tới Server đó là Post và Get. Khi sử dụng 2 phương thức này dữ liệu được truyền đi thông qua trình duyệt. Khi được biểu diễn dưới dạng code sẽ là $_POST và $_GET. Hãy cùng tìm hiểu sự khác biệt giữa Post và Get và cách sử dụng như thế nào.
Truyền dữ liệu bằng phương thức Get trong PHP
Khi dùng Get dữ liệu có dạng
http://www.mywebsite.com/index.php?name1=value1&name2=value2
Tất cả những dữ liệu đều được nhìn thấy trên thanh địa chỉ trình duyệt với các tham số (parameter).
$_GET đây là một biến toàn cục. Dữ liệu sẽ được lưu trữ dưới dạng mảng (array).
Hãy thực hành ví dụ sau:
<form action="" method="get"> <input type="text" name="firstname" placeholder="First Name"><br/> <input type="text" name="lastname" placeholder="Last Name"><br/> <input type="submit" name="submit"> </form> <?php if(isset($_GET['submit'])) { $firstname = $_GET['firstname']; $lastname = $_GET['lastname']; echo $firstname.'<br/>'; echo $lastname.'<br/>'; } ?>
Sau khi ấn nút submit dữ liệu hiện trên thanh nhập URL của trình duyệt sẽ là:
http://localhost/website/test.php?firstname=Nguyen&lastname=Thanh+Trung&submit=G%E1%BB%ADi
Tìm hiểu phương thức POST trong PHP
Phương thức Post không hiển thị dữ liệu gửi đi. Thay vào đó dùng HTTP header để truyền đi. Chính vì vậy độ bảo mật sẽ cao hơn so với GET.
Với Post sẽ đảm nhận các nhiệm vụ bảo mật như gửi mật khẩu, tài khoản ngân hàng, thông tin tài khoản vv…
Cũng với ví dụ trên bây giờ hãy thay thế $_GET bằng $_POST
<form action="" method="post"> <input type="text" name="firstname" placeholder="First Name"><br/> <input type="text" name="lastname" placeholder="Last Name"><br/> <input type="submit" name="submit"> </form> <?php if(isset($_POST['submit'])) { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; echo $firstname.'<br/>'; echo $lastname.'<br/>'; } ?>
Và quan sát trên thanh URL trình duyệt bạn sẽ thấy chỉ có
http://localhost/website/test.php?
Như vậy là mọi thứ đã rõ ràng rồi đúng phải không?
Một vài điểm khác biệt giữa get và post đó là
- Post thực thi chậm hơn so với Get
- Post không hạn chế kích thước dữ liệu gửi, còn Get bị giới hạn chiều dài tối đa của một URL là 2048 bytes
- Post không lưu lại lịch sử gửi đi, còn Get thì có
Lời kết: Với 2 phương thức trên đây là kiến thức căn bản trong PHP. Tuy nhiên bạn cũng cần hiểu và nắm rõ cách sử dụng. Bởi vì khi xây dựng trang web nếu không cẩn thận gây ra lỗ hổng rất dễ khiến cho những kẻ xấu lợi dụng. Từ đó gây thiệt hại cho website của bạn. Hơn thế nữa các thông tin sẽ bị đánh cắp là một điểu không hề tốt chút nào.