Get và Post trong PHP sử dụng như thế nào ?

Get và Post trong PHP là hai phương thức được cung cấp bởi PHP để cho phép trình duyệt gửi thông tin đến máy chủ. Hai phương thức này được sử dụng trong thẻ <form> để gửi dữ liệu biểu mẫu đến máy chủ.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

Get và Post trong PHP

Get và Post trong PHP là hai phương thức được cung cấp bởi PHP để cho phép trình duyệt gửi thông tin đến máy chủ. Hai phương thức này được sử dụng trong thẻ <form> để gửi dữ liệu biểu mẫu đến máy chủ.

Tùy thuộc vào loại dữ liệu mà bạn muốn gửi đến máy chủ, bạn có thể sử dụng phương thức GET hoặc POST trong PHP để gửi dữ liệu biểu mẫu HTML. Để lấy dữ liệu từ biểu mẫu HTML, bạn có thể sử dụng các biến siêu toàn cục $_GET hoặc $_POST trong PHP.

Giao thức HTTP cho phép truyền thông giữa máy khách và máy chủ, trong đó trình duyệt có thể là máy khách và ứng dụng chạy trên một hệ thống máy tính chứa trang web của bạn có thể là máy chủ.

Tổng quan Get và Post trong PHP

Trong bài viết này, chúng ta đã tìm hiểu về hai phương thức Get và Post trong PHP. Phương thức GET được sử dụng để gửi dữ liệu biểu mẫu HTML và dữ liệu được thu thập bởi biến $_GET để xử lý. Phương thức “get” có những ưu điểm như có thể bookmark trang, request có thể được cach, request luôn xuất hiện trong lịch sử trình duyệt, nhưng cũng có nhược điểm như giới hạn số lượng dữ liệu, không an toàn cho thông tin nhạy cảm.

Phương thức POST cũng được sử dụng để gửi dữ liệu biểu mẫu HTML và dữ liệu được thu thập bởi biến $_POST để xử lý. Phương thức “post” an toàn hơn phương thức “get” vì dữ liệu được gửi bằng phương thức POST không hiển thị cho người dùng. Tuy nhiên, phương thức “post” cũng có nhược điểm là không thể bookmark trang với chuỗi truy vấn cụ thể và yêu cầu POST không được lưu vào bộ nhớ cache của trình duyệt.

GET method

Phương thức GET được sử dụng để gửi dữ liệu biểu mẫu HTML. Dữ liệu này được thu thập bởi biến $_GET được định nghĩa sẵn để xử lý. Thông tin được gửi từ biểu mẫu HTML bằng cách sử dụng phương thức GET có thể nhìn thấy cho tất cả mọi người trong thanh địa chỉ của trình duyệt, điều này có nghĩa là tất cả các tên biến và giá trị của chúng sẽ được hiển thị trong URL. Do đó, phương thức get không an toàn để gửi thông tin nhạy cảm.

Chỉ một số lượng thông tin hạn chế có thể được gửi bằng cách sử dụng phương thức GET. Ví dụ, giới hạn số lượng ký tự để gửi chỉ là 2048 ký tự.

Ví dụ

Đoạn mã HTML dưới đây sẽ hiển thị một biểu mẫu HTML chứa hai trường nhập và một nút gửi. Trong biểu mẫu HTML này, chúng ta sử dụng phương thức = get để gửi dữ liệu biểu mẫu.

<!DOCTYPE html>
<html>
<body>

<h2>HTML Form</h2>

<form action="gettest.php" method="get">
  Username:<br>
  <input type="text" name="username"><br>
  Blood Group:<br>
  <input type="text" name="bloodgroup"><br>
  <input type="submit" value="Submit">
</form> 

</body>
</html>

Tạo file gettest.php, nơi chấp nhận dữ liệu được gửi từ biểu mẫu HTML.

<?php 
if(isset($_GET['username']) && isset($_GET['bloodgroup'])) {
    $username = $_GET['username'];
    $bloodgroup = $_GET['bloodgroup'];
    
    echo "<h1>Welcome ".$username."</h1>";
    echo "Your blood group is: ".$bloodgroup;
}
?>

Khi người dùng nhấn vào nút Submit sau khi điền thông tin vào biểu mẫu, URL được gửi đến máy chủ có thể nhìn giống như sau:

localhost/gettest.php?username=Harry&bloodgroup=AB-

Kết quả sẽ hiển thị như bên dưới:

Welcome Harry
Your blood group is: AB-

Advantages of GET method (method = “get”)

Có một số lợi ích khi sử dụng phương thức GET:

  • Bạn có thể đánh dấu trang với chuỗi truy vấn cụ thể do dữ liệu được gửi bằng phương thức GET được hiển thị trong URL.
  • Những yêu cầu GET có thể được lưu vào bộ nhớ cache của trình duyệt.
  • Những yêu cầu GET sẽ luôn xuất hiện trong lịch sử trình du yệt.

Disadvantages of GET Method

Tuy nhiên, phương thức GET cũng có một số hạn chế:

  • Phương thức GET không nên được sử dụng để gửi bất kỳ thông tin nhạy cảm nào.
  • Chỉ một lượng dữ liệu giới hạn có thể được gửi bằng phương thức GET. Giới hạn này không được vượt quá 2048 ký tự.
  • Vì lý do bảo mật, không bao giờ sử dụng phương thức GET để gửi thông tin nhạy cảm như tên người dùng và mật khẩu, bởi vì nó hiển thị chúng trên URL.
  • Phương thức GET không thể được sử dụng để gửi dữ liệu nhị phân (chẳng hạn như hình ảnh hoặc tài liệu Word) đến máy chủ.

POST method

Phương thức POST được sử dụng để gửi dữ liệu biểu mẫu HTML. Tương tự như phương thức GET, dữ liệu được thu thập bởi biến $_POST được định nghĩa sẵn để xử lý. Tuy nhiên, khác với phương thức GET, dữ liệu được gửi bằng phương thức POST không hiển thị cho người dùng.

Phương thức “post” an toàn hơn phương thức “get” vì dữ liệu được gửi bằng phương thức POST không hiển thị cho người dùng.

Ví dụ

Đoạn mã HTML dưới đây sẽ hiển thị một biểu mẫu HTML chứa hai trường nhập và một nút gửi. Trong biểu mẫu HTML này, chúng ta sử dụng phương thức = post để gửi dữ liệu biểu mẫu.

<!DOCTYPE html>
<html>
<body>

<h2>HTML Form</h2>

<form action="posttest.php" method="post">
  Username:<br>
  <input type="text" name="username"><br>
  Blood Group:<br>
  <input type="text" name="bloodgroup"><br>
  <input type="submit" value="Submit">
</form> 

</body>
</html>

Tạo file posttest.php, nơi chấp nhận dữ liệu được gửi từ biểu mẫu HTML.

<?php 
if(isset($_POST['username']) && isset($_POST['bloodgroup'])) {
    $username = $_POST['username'];
    $bloodgroup = $_POST['bloodgroup'];
    
    echo "<h1>Welcome ".$username."</h1>";
    echo "Your blood group is: ".$bloodgroup;
}
?>

Khi người dùng nhấn vào nút Submit sau khi điền thông tin vào biểu mẫu, dữ liệu sẽ được gửi đến máy chủ bằng phương thức POST. Dữ liệu này không hiển thị cho người dùng.

Advantages of POST method (method = “post”)

Có một số lợi ích khi sử dụng phương thức POST:

  • Không có giới hạn về kích thước của dữ liệu được gửi.
  • Dữ liệu gửi đi không hiển thị cho người dùng, do đó an toàn hơn so với phương thức GET.
  • Phương thức POST có thể được sử dụng để gửi dữ liệu nhị phân (chẳng hạn như hình ảnh hoặc tài liệu Word) đến máy chủ.

Disadvantages of POST Method

Tuy nhiên, phương thức POST cũng có một số hạn chế:

  • Không thể bookmark trang với chuỗi truy vấn cụ thể.
  • Những yêu cầu POST không được lưu vào bộ nhớ cache của trình duyệt.
  • Những yêu cầu POST không xuất hiện trong lịch sử trình duyệt.

$_REQUEST variable

$_REQUEST là một biến siêu toàn cục trong PHP, chứa các giá trị được gửi đến máy chủ thông qua phương thức GET, POST hoặc COOKIE. Biến này có thể được sử dụng để lấy dữ liệu từ biểu mẫu HTML bất kỳ.

Cách sử dụng Get và Post trong PHP

Get và Post trong PHP là hai phương thức HTTP được sử dụng để truyền dữ liệu từ client (trình duyệt web) đến server (máy chủ web).

Get là phương thức được sử dụng để truyền dữ liệu qua URL. Dữ liệu sẽ được hiển thị trên thanh URL, vì vậy nó không được sử dụng cho các dữ liệu nhạy cảm.

Post là phương thức được sử dụng để truyền dữ liệu qua body của yêu cầu HTTP. Dữ liệu sẽ không được hiển thị trên thanh URL, vì vậy nó được sử dụng cho các dữ liệu nhạy cảm.

Get và Post trong PHP được sử dụng để truy cập dữ liệu được gửi từ client.

Get

Để truy cập dữ liệu được gửi qua phương thức Get, chúng ta có thể sử dụng biến $_GET. Biến này là một mảng chứa các cặp key/value, với key là tên của tham số URL và value là giá trị của tham số đó.

Ví dụ

// Tạo một form với một input text
<form action="index.php" method="get">
  <input type="text" name="name">
  <input type="submit" value="Submit">
</form>

// Truy cập dữ liệu được gửi từ form
<?php
if (isset($_GET['name'])) {
  echo "Tên của bạn là: " . $_GET['name'];
}
?>

Kết quả

Tên của bạn là: [Tên của bạn]

Post

Để truy cập dữ liệu được gửi qua phương thức Post, chúng ta có thể sử dụng biến $_POST. Biến này cũng là một mảng chứa các cặp key/value, với key là tên của input trong form và value là giá trị của input đó.

Ví dụ

// Tạo một form với một input text
<form action="index.php" method="post">
  <input type="text" name="name">
  <input type="submit" value="Submit">
</form>

// Truy cập dữ liệu được gửi từ form
<?php
if (isset($_POST['name'])) {
  echo "Tên của bạn là: " . $_POST['name'];
}
?>

Kết quả

Tên của bạn là: [Tên của bạn]

So sánh Get và Post

Tính năngGetPost
Bảo mậtKhông an toànAn toàn hơn
Tốc độNhanh hơnChậm hơn
Khả năng SEOTốt hơnKém hơn
Ứng dụngDữ liệu không nhạy cảmDữ liệu nhạy cảm

Khi nào nên sử dụng Get và Post

  • Get nên được sử dụng khi dữ liệu không nhạy cảm, chẳng hạn như các tham số tìm kiếm hoặc bộ lọc.
  • Post nên được sử dụng khi dữ liệu nhạy cảm, chẳng hạn như tên người dùng, mật khẩu hoặc thông tin thẻ tín dụng.

Ưu và Nhược điểm Get và Post trong PHP

Cả hai phương thức Get và Post trong PHP đều có ưu và nhược điểm riêng của chúng. Phương thức “get” có những ưu điểm như có thể bookmark trang, request có thể được cach, request luôn xuất hiện trong lịch sử trình duyệt, nhưng cũng có nhược điểm như giới hạn số lượng dữ liệu, không an toàn cho thông tin nhạy cảm.

Phương thức “post” an toàn hơn phương thức “get” vì dữ liệu được gửi bằng phương thức POST không hiển thị cho người dùng.

Tuy nhiên, phương thức “post” cũng có nhược điểm là không thể bookmark trang với chuỗi truy vấn cụ thể và yêu cầu POST không được lưu vào bộ nhớ cache của trình duyệt.

Lời khuyên Get và Post trong PHP

Khi sử dụng phương thức Get và Post trong PHP để gửi dữ liệu biểu mẫu HTML đến máy chủ, hãy cân nhắc và chọn phương thức phù hợp với loại dữ liệu cần gửi.

Nếu bạn cần gửi thông tin nhạy cảm như tên người dùng và mật khẩu, hãy sử dụng phương thức POST để bảo vệ thông tin của bạn.

Nếu bạn cần gửi dữ liệu nhị phân (chẳng hạn như hình ảnh hoặc tài liệu Word), hãy sử dụng phương thức POST để tránh lỗi khi gửi dữ liệu.

Tổng kết

Get và Post trong PHP là hai phương thức quan trọng được sử dụng để gửi dữ liệu từ trình duyệt đến máy chủ. Vì vậy, hiểu rõ ưu điểm và nhược điểm của hai phương thức này sẽ giúp bạn lựa chọn phương thức phù hợp cho các trường hợp sử dụng khác nhau.