Trong bài học này, bạn sẽ tìm hiểu cách gửi thông tin đến máy chủ bằng các phương thức GET, phương thức POST và cách truy xuất chúng 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 và POST.
Cả hai phương pháp đều truyền thông tin khác nhau và có những ưu điểm và nhược điểm khác nhau, đọc kỹ phần tiếp theo để hiểu và sử dụng đúng đắn GET và POST.
1. Phương thức GET trong PHP
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 tên và cặp giá trị được phân tách bằng ký hiệu (&).
Nói chung, một URL có dữ liệu GET sẽ trông như thế này:
http://www.example.com/action.php?name=john&age=24
Các phần name và age trong URL là các tham số GET và john và 24 là giá trị của các tham số đó.
Có thể nhúng nhiều hơn một parameter=value trong URL bằng cách ghép với ký hiệu (&). 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 để truyền thông tin nhạy cảm như tên người dùng và mật khẩu, vì những thông tin này 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 được truy cập.
- Vì phương thức GET gán dữ liệu cho biến môi trường máy chủ, nên độ dài của URL bị giới hạn. Vì vậy, có một giới hạn cho tổng số 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 sử dụng method=’get’.
<!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>
Chạy fiel trên, submit form và xem kết quả của Url.
2. Phương thức POST trong lập trình PHP
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 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 pháp POST trong PHP
- 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ó giới hạn lớn hơn nhiều về 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 POST.
- Vì dữ liệu được gửi bởi phương thức POST không hiển thị trong URL, do đó không thể đánh dấu trang bằng truy vấn cụ thể.
Giống như $ _GET, PHP cung cấp một biến superglobal khác là $_POST để truy cập tất cả thông tin được gửi qua phương thức post hoặc submit biểu mẫu HTML bằng method=’post’.
<!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>
Chạy fiel trên, submit form và xem kết quả của Url.
3. Biến $_REQUEST trong PHP
PHP cung cấp một biến superglobal khác là $_REQUEST chứa các giá trị của cả hai biến $_GET và $_POST cũng như các giá trị của biến $_COOKIE.
<!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>
Chạy fiel trên, submit form và xem kết quả của Url.
Bạn sẽ còn được tìm hiểu thêm về cookie trong PHP và cách xử lý biểu mẫu trong phần PHP nâng cao.
Lưu ý: Các biến $_GET, $_POST và $_REQUEST là các biến tích hợp luôn có sẵn trong tất cả các phạm vi trong toàn bộ tập lệnh.
Tổng kết
Như vậy là bạn đã biết ưu và nhược điểm của phương thức GET và POST trong PHP. Tùy tình huống cụ thể mà sử dụng các phương thức khác nhau.
Hãy nắm vững phương thức này, bởi chúng ta sẽ cần dùng nhiều đến chúng.