01/10/2018, 15:30

Bài 9: Các Phương Thức GET & POST – PHP

Có 2 cách để trình duyệt gửi thông tin tới web server. • GET • POST Trước khi trình duyệt gửi thông tin, nó mã hóa, sử dụng 1 chương trình gọi là mã hóa URL. Trong chương trình đó các cặp name/value được tham gia với một ký hiệu dấu = và các cặp khác nhau được phân biệt bởi ký tự & ...

Có 2 cách để trình duyệt gửi thông tin tới web server.
• GET
• POST
Trước khi trình duyệt gửi thông tin, nó mã hóa, sử dụng 1 chương trình gọi là mã hóa URL. Trong chương trình đó các cặp name/value được tham gia với một ký hiệu dấu = và các cặp khác nhau được phân biệt bởi ký tự &
Ví dụ: name1=value1&name2=value2….
Các khoảng trắng sẽ được loại bỏ và thay thế bằng dấu + và bất kỳ ký tự không phải alphabet sẽ được thay thế một giá trị hexadecimal. Sau khi thông tin được mã hóa nó sẽ gửi tới server.

Phương thức GET

Phương thức get gửi mã hóa thông tin người dùng nối vào yêu cầu của page, có một số diển giải tôi phải dùng nguyên tên tiếng anh, cố convert sang tiếng việt hơi khó hiểu hơn hihi. Trang mã hóa thông tin được phân biệt bởi ký tự ?
Ví dụ:
http://www.dammelaptrinh.com?name1=value1&name2=value2

  • Phần từ sau ký tự ? là các đối số, biến chúng ta sẽ nhận khi nó gửi đến server
    • Phương thức GET tạo ra một chuỗi dài mà xuất hiện trên trình duyệt
    • Các phương thức GET được giới hạn tối đa 1024 ký tự (nếu chúng ta đưa lên trình duyệt một chuổi dài quá thì GET không còn sử dụng được nữa)
    • Không bao giờ sử dụng phương thức GET nếu bạn có mật khẩu hoặc các thông tin nhạy cảm khác sẽ được gửi đến máy chủ. Điều này là đương nhiên, thử nghĩ cái password của bạn nó nằm lồ lộ trên trình duyệt thì làm sao mà an toàn được
    • GET không thể gửi được dử liệu nhị phân, giống như hình ảnh hoặc tài liệu word tới máy chủ
    • Các 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 (biến này chứa một chuối từ sau dấu chấm ? , tức là nó sẽ chứa name1=value1&name2=value2)
    • PHP cung cấp $_GET để truy cập tất cả thông tin được gửi bằng phương thức GET

Ví dụ :

9.2

Tạo file test.php với nội dung như trên, sau đó từ trình duyệt bạn chạy nó, giả định là localhost/test.php
Các bạn sẽ thấy xuất hiện form để nhập dữ liệu

bai9

Sau đó nhấn submit để gửi thông tin về server, form chúng ta sử dụng phương thức là GET khi đó nó sẽ gửi thông tin có dạng như sau;
http://dammelaptrinh?name=dammelaptrinh&age=32. ở trên trình duyệt các bạn không thấy cái này, muốn xem thì các bạn phải click chuột phải vào trình duyệt chọn inspect , kế tiếp chọn tab network sẽ thấy trình duyệt chúng ta vừa gửi thông tin form dạng GET theo url http://dammelaptrinh?name=dammelaptrinh&age=32
Muốn nhận dữ liệu ta sử dụng phương thức $_GET[‘tên biến’]

Kết quả là

bai9.1

Phương thức POST

  • Phương thức này chuyển thông tin theo đường http headers. Thông tin được mã hóa như mô tả trong trường hợp của phương thức GET và đặt vào header gọi là QUERY_STRING.
    • Phương thức POST không có bất kỳ giới hạn nào về kích thước dữ liệu để gửi về server.
    • Phương thức POST có thể được sử dụng để gửi mã ASCII cũng như dữ liệu nhị phân
    • Dữ liệu gửi bằng phương thức POST xuyên qua http header, vì vậy việc bảo mật phụ thuộc vào giao thức http(ví dụ SSL cũng là một giao thức bảo mật http,và nhiều gói khác của các nhà cung cấp trên thế giới). Bằng việc sử dụng bảo mật http bạn có thể tạo sự chắc chắn rằng thông tin của bạn được bảo mật.
    • PHP cung cấp $_POST để truy cập tất cả thông tin gửi đến server theo phương thức POST.

Ví dụ:
Cũng như trong ví dụ cho phương thức GET, các bạn hãy thay đổi như sau

9.

Rồi chạy lại site, sau khi nhấp submit các bạn sẽ thấy thông tin gửi đi đã được mã hóa, cách xem đã đề cập như phần GET.

Biến $_REQUEST

Biến $_REQEST chứa đựng nội dụng của cả 2 $_GET, $_POST, tức là thay vì ta phải xem phương thức gửi là gì rồi mới dùng $_GET, $_POST tương ứng, ở đây ta dùng $_REQEST sẽ lấy được tất cả, mà không cần biết là gửi đi post, hay get. Và biến này chứa luôn cả $_COOKIE. Chúng ta sẽ bàn luận về $_COOKIE khi chúng ta diển giải về cookies.
Bây giờ chúng ta sử dụng lại ví dụ ở trên, nhưng thay $_POST,$_GET bằng $_REQEST để lấy dữ liệu

9.4

Các bạn hãy chạy thử để kiễm nghiệm.

Hẹn gặp lại các bạn!

0