PHP Cơ bản
PHP Nâng cao
PHP & Cơ sở dữ liệu MySQL
Ví dụ PHP
Tài liệu tham khảo PHP
Quảng cáo

Phương thức GET và POST

Trong hướng dẫn này, bạn sẽ học cách gửi thông tin đến máy chủ bằng phương thức HTTP GET và POST và nhận dữ liệu bằng PHP.

Phương thức gửi thông tin đến máy chủ

Một trình duyệt web giao tiếp với máy chủ thường sử dụng một trong hai phương thức HTTP (Giao thức truyền siêu văn bản) - GET POST. Cả hai phương thức truyền thông tin khác nhau và có những ưu điểm và nhược điểm khác nhau, như được mô tả bên dưới.

Phương thức GET

Trong phương thức GET, dữ liệu được gửi dưới dạng tham số URL thường là các chuỗi cặp giá trị và tên được phân tách bằng dấu và (&). Nói chung, một URL có dữ liệu GET sẽ giống như sau:

http://www.example.com/action.php?name=john&age=24

Các phần in đậm trong URL là các tham số GET và các phần in nghiêng là giá trị của các tham số đó. Có thể nhiều hơn một parameter=value được nhúng vào URL bằng cách nối với ký hiệu và (&). Người ta chỉ có thể gửi dữ liệu văn bản đơn giản thông qua phương thức GET.

Ưu điểm và nhược điểm của việc sử dụng phương thức GET

  • Vì dữ liệu được gửi bởi phương thức GET được hiển thị trong URL, nên có thể đánh dấu trang bằng các giá trị chuỗi truy vấn cụ thể.
  • Phương thức GET không phù hợp để chuyển thông tin nhạy cảm như tên người dùng và mật khẩu, vì chúng hiển thị đầy đủ trong chuỗi truy vấn URL cũng như có khả năng được lưu trữ trong bộ nhớ của trình duyệt máy khách dưới dạng trang đã truy cập.
  • Vì phương thức GET chỉ định dữ liệu cho một biến môi trường máy chủ, độ dài của URL bị giới hạn. Vì vậy, có một giới hạn cho tổng dữ liệu được gửi.

PHP cung cấp biến superglobal $_GET để truy cập tất cả thông tin được gửi qua URL hoặc được gửi qua biểu mẫu HTML bằng cách sử dụng method="get".

Ví dụ

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Example of PHP GET method</title>
</head>
<body>
<?php
if(isset($_GET["name"])){
    echo "<p>Hi, " . $_GET["name"] . "</p>";
}
?>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>

Phương thức POST

Trong phương thức POST, dữ liệu được gửi đến máy chủ dưới dạng một gói trong một giao tiếp riêng biệt với tập lệnh xử lý. Dữ liệu được gửi qua phương thức POST sẽ không hiển thị trong URL.

Ưu điểm và nhược điểm của việc sử dụng phương thức POST

  • Nó an toàn hơn GET vì thông tin do người dùng nhập không bao giờ hiển thị trong chuỗi truy vấn URL hoặc trong nhật ký máy chủ.
  • Có một giới hạn lớn hơn nhiều về số lượng dữ liệu có thể được truyền và người ta có thể gửi dữ liệu văn bản cũng như dữ liệu nhị phân (tải lên tệp) bằng cách sử dụng POST.
  • Vì dữ liệu được gửi bởi phương thức POST không hiển thị trong URL, vì vậy không thể đánh dấu trang có truy vấn cụ thể.

Giống như $_GET, PHP cung cấp một biến superglobal khác $_POST để truy cập vào tất cả thông tin được gửi qua phương thức bưu điện hoặc được gửi qua biểu mẫu HTML bằng cách sử dụng method="post".

Ví dụ

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Example of PHP POST method</title>
</head>
<body>
<?php
if(isset($_POST["name"])){
    echo "<p>Hi, " . $_POST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>

Biến $_REQUEST

PHP cung cấp một biến superglobal khác $_REQUEST chứa các giá trị của cả biến $_GET $_POST cũng như các giá trị của biến superglobal $_COOKIE.

Ví dụ

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Example of PHP $_REQUEST variable</title>
</head>
<body>
<?php
if(isset($_REQUEST["name"])){
    echo "<p>Hi, " . $_REQUEST["name"] . "</p>";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <label for="inputName">Name:</label>
    <input type="text" name="name" id="inputName">
    <input type="submit" value="Submit">
</form>
</body>

Bạn sẽ tìm hiểu thêm về cookie PHP và xử lý biểu mẫu trong phần nâng cao.

Ghi chú: Các biến superglobal $_GET, $_POST và $_REQUEST được tích hợp theo các biến mà luôn luôn có sẵn trong tất cả các phạm vi suốt mã nguồn PHP của bạn.

Bài viết này đã giúp ích cho bạn?

Advertisements