Có hai cách trình duyệt khách có thể gửi thông tin đến máy chủ web.
- Phương thức GET
- Phương thức POST
Trước khi trình duyệt gửi thông tin, nó sẽ mã hóa thông tin đó bằng cách sử dụng sơ đồ gọi là mã hóa URL. Trong sơ đồ này, các cặp tên/giá trị được nối bằng các dấu bằng nhau 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 được xóa và thay thế bằng ký tự + và mọi ký tự không phải 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 thức 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 bị giới hạn chỉ 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ủ.
- Không thể sử dụng GET để gửi dữ liệu nhị phân, chẳng hạn như hình ảnh hoặc tài liệu từ, tới 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 kết hợp $_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 vào 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>
Phương thức POST
Phương thức POST chuyển thông tin qua tiêu đề HTTP. Thông tin được mã hóa như được mô tả trong trường hợp của phương thức GET và đư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 HTTP bảo mật, 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 kết hợp $_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 vào 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>
Biến $_REQUEST
Biến PHP $_REQUEST chứa nội dung của cả $_GET, $_POST và $_COOKIE. Chúng ta sẽ thảo luận về biến $_COOKIE khi 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ả hai phương thức GET và POST.
Hãy thử ví dụ sau bằng cách đặt mã nguồn vào 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 tập lệnh tự mà nó đang được gọi.