Tìm hiểu phương thức $_get và $_post trong PHP 2021

By 08/06/2021Tháng Bảy 17th, 2021KIẾN THỨC LẬP TRÌNH, PHP

Cả phương thức GET và POST trong PHP đều tạo ra một mảng chứa các cặp key/value. $_GET trong PHP được sử dụng để truyền một mảng vào tập lệnh với các tham số URL.

Còn $_POST trong PHP được sử dụng để truyền một mảng vào tập lệnh với phương thức HTTP POST. Cùng tôi tìm hiểu kỹ hơn về sự khác biệt giữa hai phương thức này nhé.

1. Phương thức GET

Phương thức GET gửi thông tin người dùng được mã hóa vào yêu cầu trang. Trang này và thông tin được mã hóa được ngăn cách bởi ký tự ?.

http://www.test.com/index.htm?name1=value1&name2=value2

  • Phương thức GET  tạo ra một chuỗi dài xuất hiện trên nhật ký máy chủ, trong phần Location của trình duyệt: box.
  • Phương thức GET có thể gửi được tối đa chỉ 1024 ký tự.
  • Không được sử dụng phương thức GET khi bạn gửi mật khẩu hoặc các thông tin nhạy khác đến máy chủ.
  • Phương thức GET không thể được sử dụng để gửi dữ liệu nhị phân đến máy chủ, ví dụ như hình ảnh hoặc tài liệu word.
  • Dữ liệu được gửi bằng phương thức GET có thể được truy cập bằng cách sử dụng biến môi trường QUERY_STRING.
  • PHP cung cấp mảng liên kết $_GET để truy cập tất cả thông tin đã được gửi bằng phương thức GET.

Hãy cùng xem qua ví dụ về cách đặt mã nguồn trong tập lệnh test.php.

<?php

if( $_GET[“name”] || $_GET[“age”] ) {

echo “Welcome “. $_GET[‘name’]. “<br />”;

echo “You are “. $_GET[‘age’]. ” years old.”;

exit();

}

?>

<html>

<body>

<form action = “<?php $_PHP_SELF ?>” method = “GET”>

Name: <input type = “text” name = “name” />

Age: <input type = “text” name = “age” />

<input type = “submit” />

</form>

</body>

</html>

Và kết quả đạt được sẽ như sau:

phương thức get và post trong php

Phương thức get và post trong PHP

Mẹo sử dụng PHP Get

Sử dụng phương thức GET sẽ không làm ẩn đi thông tin được gửi từ biểu mẫu: tất cả mọi thứ đều được hiển thị trong URL. Ngoài ra, phương thức này còn có giới hạn về số lượng dữ liệu có thể được gửi.

Tuy nhiên, bởi vì thông tin được hiển thị trong URL nên bạn có thể đánh dấu các trang. Điều này trở nên khá hữu ích trong một số trường hợp đặc biệt.

Tóm lại, bạn chỉ nên sử dụng phương thức này để xử lý những thông tin không nhạy.

Lưu ý quan trọng: bạn không bao giờ được sử dụng phương thức GET để gửi mật khẩu hay bất kỳ dữ liệu nhạy nào.

2. Phương thức Post

Phương thức POST giúp chuyển đổi thông tin qua HTTP headers.  Thông tin được mã hóa tương tự như khi sử dụng phương thức GET và được đặt trong header có tên là QUERY_STRING.

  • Phương thức POST không giới hạn kích thước dữ liệu được gửi.
  • Phương thức POST có thể được sử dụng để gửi bảng mã ASCII cũng như dữ liệu nhị phân.
  • Dữ liệu được gửi bởi phước thức POST sẽ đi qua HTTP header, do đó, tính bảo mật phụ thuộc vào giao thức HTTP. Bằng cách sử dụng Secure HTTP (phần mở rộng cho Giao thức truyền siêu văn bản), bạn có thể an tâm bởi vì mọi thông tin của mình đều được bảo mật.
  • PHP cung cấp mảng kết hợp $_POST để truy cập tất cả thông tin được gửi bằng phương thức POST.

Ví dụ dưới đây chính là cách đặt mã nguồn trong tập lệnh test.php

<?php

if( $_POST[“name”] || $_POST[“age”] ) {

if (preg_match(“/[^A-Za-z’-]/”,$_POST[‘name’] )) {

die (“invalid name and name should be alpha”);

}

echo “Welcome “. $_POST[‘name’]. “<br />”;

echo “You are “. $_POST[‘age’]. ” years old.”;

exit();

}

?>

<html>

<body>

<form action = “<?php $_PHP_SELF ?>” method = “POST”>

Name: <input type = “text” name = “name” />

Age: <input type = “text” name = “age” />

<input type = “submit” />

</form>

</body>

</html>

Và kết quả đạt được như sau:

get và post trong php

Post trong PHP

Mẹo sử dụng PHP Post

Không giống như phương thức GET, phương thức POST ẩn đi dữ liệu được gửi bằng cách nhúng chúng vào trong phần thân của HTTP request.

Nó không giới hạn cũng như hỗ trợ khá nhiều tính năng nâng cao, ví dụ như hỗ trợ cho đầu vào nhị phân nhiều phần khi sử dụng FTP (File Transfer Protocol – Giao thức truyền tải tập tin)

Do đó, không mấy ngạc nhiên khi hầu hết các lập trình viên thích sử dụng phương thức POST để xử lý dữ liệu được thu thập bằng các biểu mẫu PHP.

Nhược điểm duy nhất của phương thức POST chính là không có tính năng đánh dấu các trang cụ thể.

3. Phương thức GET và POST trong PHP khác nhau như thế nào?

Nhìn chung, cả $_POST và $_GET trong PHP đều được sử dụng để gửi dữ liệu lên server. Tuy nhiên, giữa chúng vẫn tồn tại một số khác biệt về khía cạnh mức độ bảo mật, giới hạn ký tự, hỗ trợ dữ liệu và thời gian thực thi.

Cụ thể như sau:

Xét về tính bảo mật:

  • Phương thức POST có tính bảo mật cao hơn,bởi nó không hiển thị dữ liệu trên thanh URL
  • Còn khi sử dụng phương thức GET, bạn có thể thấy được dữ liệu trên thanh URL. Điều này đồng nghĩa với việc tính bảo mật không cao và dữ liệu dễ bị rò rỉ ra bên ngoài.

Xét về giới hạn ký tự:

  • Đối với phương thức POST, không giới hạn kích thước dữ liệu
  • Tuy nhiên, phương thức GET lại có giới hạn độ dài ký tự (tối đa 1024 ký tự).

Xét về mức độ hỗ trợ kiểu dữ liệu:

  • Phương thức POST hỗ trợ khá nhiều kiểu dữ liệu, chẳng hạn như String (chuỗi), Numeric (số), Binary (nhị phân), …
  • Trong khi đó, phương thức GET chỉ hỗ trợ một kiểu dữ liệu duy nhất, chính là kiểu String.

Xét về tốc độ xử lý:

  • Phương thức POST xử lý dữ liệu mất nhiều thời gian hơn là phương thức GET
  • Và tất nhiên là phương thức GET mất ít thời gian thực thi hơn phương thức POST

Trên đây là những kiến thức quan trọng về $_POST và $_GET trong PHP. Hy vọng qua bài viết này bạn đã có thể nắm rõ được sự khác biệt và biết sử dụng GET và POST trong PHP đúng cách.

Nếu các bạn quan tâm đến PHP và đang tìm 1 khóa học PHP thì Ironhack Việt Nam là 1 trong những trung tâm đào tạo lập trình uy tín mà bạn có thể tin tưởng.

Để lại một câu trả lời