Mục lục
Các 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 và 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.
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
Với name, age là các tham số GET và join, 24 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ể.
- 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.
- 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.
PHP cung cấp biến superglobal $_GET
để truy cập được 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 một 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 hay 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, nên 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 được 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 biến superglobal khác là $_REQUEST
chứa các giá trị của cả biến $_GET
và $_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 PHP 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 mã nguồn PHP của bạn.