Bộ mã nguồn web viết bằng PHP và được đưa lên host chính là Server, còn khi truy cập web thì người dùng chính là Client. Khi đăng nhập hay đăng kí tài khoản hay comment thì dữ liệu sẽ được Client gửi lên Server. Server nhận được thông báo qua 2 phương thức : GET và POST trong bài viết này, chúng ta sẽ tìm hiểu về cách trình duyệt gửi thông tin đến máy chủ web thông qua phương pháp Get và Post trong PHP.
Có hai cách máy khách trình duyệt có thể gửi thông tin đến máy chủ web.
- Phương pháp GET
- Phương pháp POST
Trước khi trình duyệt gửi thông tin, nó sẽ mã hóa thông tin bằng một lược đồ gọi là mã hóa URL. Trong lược đồ này, các cặp tên / giá trị được nối với các dấu bằng và các cặp khác nhau được phân tách bằng dấu và.
name1=value1&name2=value2&name3=value3
Dấu cách bị xóa và thay thế bằng ký tự + và bất kỳ ký tự không chữ và số nào khác được thay thế bằng giá trị thập lục phân. Sau khi thông tin được mã hóa, nó sẽ được gửi đến máy chủ.
Phương pháp GET trong PHP
Phương thức GET gửi thông tin người dùng đã mã hóa được thêm vào yêu cầu trang. Trang và thông tin được mã hóa được phân tách bằng dấu ? tính cách.
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 trong nhật ký máy chủ của bạn, trong hộp Vị trí: của trình duyệt.
- Phương thức GET chỉ được gửi tối đa 1024 ký tự.
- Không bao giờ sử dụng phương thức GET nếu bạn có mật khẩu hoặc thông tin nhạy cảm khác được gửi đến máy chủ.
- GET không thể được sử dụng để gửi dữ liệu nhị phân, như hình ảnh hoặc tài liệu văn bản, đến máy chủ.
- 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 đã gửi bằng phương thức GET.
Hãy thử ví dụ sau bằng 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>
Nó sẽ tạo ra kết quả sau:
Phương pháp POST trong PHP
Phương thức POST chuyển thông tin qua tiêu đề HTTP. Thông tin được mã hóa như mô tả trong trường hợp của phương thức GET và được đưa vào tiêu đề có tên QUERY_STRING.
- Phương thức POST không có bất kỳ hạn chế nào về kích thước dữ liệu được gửi.
- Phương thức POST có thể được sử dụng để gửi ASCII cũng như dữ liệu nhị phân.
- Dữ liệu được gửi bằng phương thức POST đi qua tiêu đề HTTP nên tính bảo mật phụ thuộc vào giao thức HTTP. Bằng cách sử dụng Secure HTTP, bạn có thể đảm bảo rằng thông tin của mình được bảo mật.
- PHP cung cấp mảng liên kết $ _POST để truy cập tất cả thông tin đã gửi bằng phương thức POST.
Hãy thử ví dụ sau bằng 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>
Nó sẽ tạo ra kết quả sau:
Biến $ _REQUEST
Biến $ _REQUEST trong PHP chứa nội dung của cả $ _GET, $ _POST và $ _COOKIE. Chúng tôi sẽ thảo luận về biến $ _COOKIE khi chúng tôi giải thích về cookie.
Biến $ _REQUEST trong PHP có thể được sử dụng để lấy kết quả từ dữ liệu biểu mẫu được gửi bằng cả phương thức GET và POST.
Hãy thử ví dụ sau bằng cách đặt mã nguồn trong tập lệnh test.php.
<?php
if( $_REQUEST["name"] || $_REQUEST["age"] ) {
echo "Welcome ". $_REQUEST['name']. "<br />";
echo "You are ". $_REQUEST['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>
Ở đây biến $ _PHP_SELF chứa tên của self script mà nó đang được gọi.
Nó sẽ tạo ra kết quả sau:
>>> Đọc thêm: Debug trong PHP - Hé lộ một số phương pháp debug trong PHP
So sánh về phương thức Get và Post trong PHP
POST |
GET |
Giá trị không hiển thị trong URL |
Giá trị hiển thị trong URL |
Không giới hạn độ dài của các giá trị vì chúng được gửi qua phần thân của HTTP |
Có giới hạn về độ dài của các giá trị thường là 255 ký tự. Điều này là do các giá trị được hiển thị trong URL. Lưu ý rằng giới hạn trên của các ký tự phụ thuộc vào trình duyệt. |
Có hiệu suất thấp hơn so với phương pháp Php_GET do mất thời gian đóng gói các giá trị Php_POST trong phần thân HTTP |
Có hiệu suất cao so với phí phương thức POST về bản chất đơn giản của việc nối các giá trị trong URL. |
Hỗ trợ nhiều kiểu dữ liệu khác nhau như chuỗi, số, nhị phân, v.v. |
Chỉ hỗ trợ các kiểu dữ liệu chuỗi vì các giá trị được hiển thị trong URL |
Kết quả không được đánh dấu sách |
Kết quả có thể được đánh dấu sách do khả năng hiển thị của các giá trị trong URL |
Sơ đồ dưới đây cho thấy sự khác biệt giữa get và post trong PHP
>>> Tham khảo: khóa học lập trình PHP
Kết luận: Trên đây là các kiến thức về Get và Post trong PHP. Đây là hai cách máy khách trình duyệt có thể gửi thông tin đến máy chủ web. Nhìn chung, việc nắm rõ thông tin về phương thức Get và Post trong PHP là yếu tố cần thiết để bạn hiểu rõ về PHP. Hy vọng các kiến thức trên có thể hữu ích với bạn. Tìm hiểu thêm về PHP và các ngôn ngữ lập trình khác qua các khóa học lập trình tại T3H.