[BÀI 13] PHƯƠNG THỨC TRUYỀN NHẬN DỮ LIỆU GET VÀ POST TRONG PHP
Tổng quan: Trong PHP để truyền và nhận dữ liệu giữa máy chủ (server) và máy khách (client) phải dùng đến các phương thức được định sẵn trong đó 2 phương thức GET và POST là 2 phương thức được dùng phổ biến nhất. Tùy vào từng trường hợp mà lập trình viên sử dụng 1 trong 2 phương thức trên. Hai ...
Tổng quan:
Trong PHP để truyền và nhận dữ liệu giữa máy chủ (server) và máy khách (client) phải dùng đến các phương thức được định sẵn trong đó 2 phương thức GET và POST là 2 phương thức được dùng phổ biến nhất. Tùy vào từng trường hợp mà lập trình viên sử dụng 1 trong 2 phương thức trên. Hai phương thức này tạo nên sự trao đổi nhịp nhàng giữa máy chủ và máy khách.
Phương thức GET
Trong phương thức này, dữ liệu được gửi đi được thể hiện lên trên thanh URL (thanh địa chỉ) hay còn gọi là truyền biến lên URL.
Biến truyền lên URL chỉ tối đa 1024 ký tự do vậy khi truyền biến, chỉ nên truyền các biến dạng chuỗi ngắn, không nên truyền các dữ liệu có kích thước lớn.
Không thể gửi dữ liệu dạng nhị phân lên URL, vì vậy không thể truyền các file hay các tệp như hình ảnh, video,… lên URL được.
Một lưu ý quan trọng cho phương thức GET là không nên truyền các biến có tính bảo mật lên thanh URL, một khi truyền biến lên thanh URL thì dữ liệu được hiển thị trên thanh URL mà không được mã hóa, khiến người khác có thể nhìn thấy nội dung dữ liệu một cách rõ ràng. Các dữ liệu như tài khoản, mật khẩu,… là những dữ liệu nhạy cảm, do vậy mà với những dữ liệu kiểu như thế này, chúng ta không nên dùng phương thức GET để truyền nhận dữ liệu.
Mục đích sử dụng phương thức GET:
- Phương thức GET thường được sử dụng cho các truy vấn vào CSDL, chẳng hạn như việc lọc dữ liệu khi bạn vào một trang web nào đấy. Đơn cử như bạn vào một trang web để mua điện thoại, bạn muốn tìm những điện thoại có giá trên 10 triệu của SONY, lúc này bạn nhấn vào bộ lọc tìm kiếm trên trang web. Dữ liệu sẽ gửi lên thanh URL và truyền đến server để xử lý, rồi trả về trang web có nội dung như bạn mong muốn.
- Hoặc bạn truyền biến lên URL để có thể sử dụng biến này ở bất kỳ vị trí nào trên trang hiện hành. Khi truyền lên thanh URL tầm vực của biến sẽ là biến toàn cục, và có thể sử dụng ở bất kỳ đâu trên trang hiện hành.
- Đối với các dữ liệu người lập trình muốn cho người sử dụng biết, thì nên truyền lên thanh URL, việc truyền biến lên thanh URL cũng sẽ tốt cho SEO hơn.
Ví dụ mô tả quá trình lọc dữ liệu khi bạn chọn mua điện thoại như mô tả ở trên:
khi bạn nhấn lọc dữ liệu: điện thoại trên 10 triệu và là của hãng SONY , biến được truyền lên URL
Và url sẽ cơ bản có dạng như sau:
http://devpro.edu.vn?gia=tren10trieu&hang=sony
Cách mà máy chủ nhận biết các biến trên thanh URL của bạn:
- Như thanh URL ở trên phần sau dấu hỏi ‘?’ là các biến mà bạn truyền lên. Ở đây bạn truyền lên 2 biến là $_GET[“gia”] và $_GET[“hang”], và tương ứng $_GET[“gia”] = “tren10trieu”, $_GET[“hang”] = “sony”. Các biến này ngăn cách bởi ký tự và ‘&’
Sử dụng biến GET
- Phương thức GET truyền đi dữ liệu kiểu mảng, do vậy mà mỗi biến trong phương thức GET là một phần tử của mảng này. Với biến được truyền lên URL là hang=sony , thì biến $_GET[“hang”] = “sony”
Phương thức POST
Cũng có chức năng truyền nhận dữ liệu như phương thức GET nhưng phương thức POST cho phép gửi được dữ liệu có kích thước lớn và dữ liệu không được truyền lên thanh URL.
- Khi dùng phương thức POST dữ liệu sẽ được mã hóa dạng nhị phân và gửi ngầm giữa máy khách – chủ. Người dùng sẽ không quan sát được sự truyền nhận dữ liệu này.
- Phương thức POST cho phép truyền file do vậy, dữ liệu kiểu hình ảnh, video, …. mà không giới hạn kích thước.
- Phương thức POST bảo mật hơn phương thức GET: chính vì dữ liệu không được thể hiện lên URL mà lại được chuyển thành dữ liệu dạng nhị phân, gửi ngầm giữa các máy khách chủ, độ tin cậy sẽ cao hơn. Chính vì vậy việc truyền nhận các dữ liệu mang tính nhạy cảm bảo mật, … thì sử dụng phương thức POST là hợp lý hơn phương thức GET
Dữ liệu gửi đi theo phương thức POST cũng là kiểu mảng, do vậy để sử dụng biến được gửi đi theo phương thức POST cũng giống như phương thức GET, ví dụ $_POST[“hang”] = “sony”;
Khai báo biến GET và POST:
Biến được tạo ra trong phương thức GET và POST, không phải ra từ khai báo. Thông thường để khai báo 1 biến chúng ta khai báo theo cú pháp $ten_bien = gia_tri. Song với phương thức GET và POST chúng ta lại không làm theo cách như vậy, biến $_GET[“data”] và $_POST[“data”] được sinh ra khi xảy ra sự truyền nhận dữ liệu. Trường hợp sử dụng nhiều nhất biến GET và POST là sau khi submit form, lúc này các giá trị trong ô input sẽ được gán vào các biến GET hoặc POST (tùy vào phương thức bạn đặt bằng thuộc tính method), lúc này biến GET và POST sẽ tồn tại và mang giá trị.
Video ví dụ về một số trường hợp sử dụng phương thức GET và POST trong thực tế: