PHP - Phương thức GET & POST
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 ĐĂNG
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à được thay thế bằng ký tự + và mọi ký tự không chữ và số 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
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 từ, đế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 $_GET mảng kết hợp để 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 ĐĂNG
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 $_POST mảng kết hợp để 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 PHP $ _REQUEST 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: