Hướng dẫn dùng s post trong PHP
Tiếp tục series học PHP căn bản, ở bài 13 này chúng ta sẽ học về 2 phương thức truyền tải dữ liệu thông dụng trong mô hình Client-Server đó là Get và Post. Các bạn có thể xem lại khái niệm của Client-Server. Show
Phương thức GET trong PHPKhi người dùng phía client sử dụng phương thức GET gửi dữ liệu lên server thông qua các tham số (parameter) trên thanh địa chỉ URL của Browser. Các tham số trên URL bắt đầu bằng dấu chấm hỏi ( ? ) và được ngăn cách với nhau bởi dấu và ( & ). Server sẽ phân tích tất cả những thông tin đằng sau dấu hỏi (?) chính là phần dữ liệu mà Client gửi lên. Ví dụ: ta có URL Khi truy cập, từ Server sẽ hiểu giá trị p = 7740 và giá trị preview = true.
Đó là ví dụ về phần Client truy cập từ thanh địa chỉ URL. Chúng ta bây giờ sẽ chuyên sang các vấn đề trong code PHP. Trong code khi các dữ liệu mà Client gửi lên bằng phương thức GET đều được lưu trong một biến toàn cục mà PHP tự tạo ra đó là biến $_GET. ( $_GET là một biến toàn cục lưu trữ dưới dạng mảng bất tuần tự.) 'TanHongIT', 'website' => 'tanhongit.net' ]; ?> //biến $_GET là một mảng chứa nhiều phần tử Lưu ý về phương thức GET trong PHP
Ví dụ thực hànhVí dụ 1: Bạn khởi tạo 1 file demo.php nằm trong thư mục WWW của WampServer hoặc tạo trong thư mục htdocs nếu bạn dùng Xampp, sau đó bạn dán đoạn code bên dưới vào. 'TanHongIT', 'website' => 'tanhongit.net' ]; ?> khi truy cập vào title - TanHongIT website - tanhongit.net Ở ví dụ trên mình sử dụng phương thức GET ngay trong 1 file duy nhất, mình đã sử dụng vòng lặp Foreach để lấy toàn bộ key và value có trong biến $_GET là một mảng có nhiều phần tử. GET còn có thể sử dụng để truyền dữ liệu từ file này sang file khác. hãy làm tiếp ví dụ 2. Ví dụ 2: Tạo 2 file, 1 file có tên get_demo.php và một file demo.html Đầu tiên, ở trong file demo.html ta sẽ tạo 1 form để lấy dữ liệu nhập vào từ bàn phím và gửi lên server.
Ở file demo.html mình có tạo 2 trường nhập liệu trong form có tên là title và web để truyền dữ liệu nhập từ bàn phím vào file get_demo.php Tiếp theo ta viết code để phía Server xuất ra màn hình sau khi nó đã nhận dữ liệu được nhập vào từ file demo.html thông qua file get_demo.php '; echo 'Title: ' . $_GET['title'] . ' Hãy test thử bằng cách chạy file demo.html lên theo đường link 'TanHongIT', 'website' => 'tanhongit.net' ]; ?>1 sau đó nhập vào các trường dữ liệu và nhấn vào button Submit. Lập tức Server sẽ tự động chuyển link sang file get_demo.php và xuất ra thông tin bạn đã nhập liệu.
Ví dụ: Kết quả nhận được sau khi Enter sẽ như hình dưới:
Vì thế khi muốn tạo dữ liệu nào đó ta không nên sử dụng phương thức GET mà phải dùng POST vì GET luôn để lộ thông tin trên địa chỉ URL nên rất dễ bị hack đánh cắp dữ liệu. Phương thức POST trong PHPPhương thức POST sẽ trái ngược với phương thức GET về tính bảo mật cũng như tốc độ. Về phương thức GET, chúng ta có thể xem thông tin trên thanh địa chỉ URL, dữ liệu được gửi đi bằng GET sẽ thông qua các paramter trên URL. POST thì ngược lại, nó không gửi dữ liệu đi bằng paramter trên URL mà thông qua HTTP header, vì vậy việc bảo mật phụ thuộc vào giao thức HTTP mà website đó đang sử dụng. Parameters được truyền trong request body nên có thể truyền dữ liệu lớn, hạn chế tùy thuộc vào cấu hình của Server. Không cache và bookmark được cũng như không được lưu lại trong browser history. POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi, có thể gửi dữ liệu nhị phân, hình ảnh. Nội dung dữ liệu được gửi đi bằng phương thức POST sẽ luôn bị ẩn đi và chúng ta không thể thấy được. Phương thức Post trong mô hình Client-ServerCác bạn hãy tìm hiểu và làm ví dụ bên dưới để hiểu cách phương thức POST truyền dữ liệu lên Server như thế nào nhé! Phía Client gửi lênVới phương thức GET, dữ liệu sẽ được thấy trên URL, nhưng phương thức POST thì hoàn toàn ngược lại, POST sẽ phải gửi dữ liệu qua form HTML và các giá trị sẽ được định nghĩa trong các thẻ input gồm các kiểu (textbox, radio, checkbox, password, textarea, hidden) và được nhận dang thông qua tên (name) của các thẻ input đó. Bạn hãy tạo file demo.html trong thư mục WWW của WampServer hoặc tạo trong thư mục htdocs nếu bạn dùng Xampp và chèn đoạn code bên dưới vào.
Phần code trên mục đích dùng để nhập liệu từ phía Client để gửi lên Server. Giờ chúng ta sang phần Server. Phía Server nhận dữ liệu và trả vềTất cả các dữ liệu gửi bằng phương thức POST đều được lưu trong một biến toàn cục $_POST do PHP tự tạo ra, vì thế từ bây giờ bạn chỉ cần thao tác lấy hoặc gửi dữ liệu thông qua biến $_POST này là được. Ở file demo.html mình có tạo 2 trường nhập liệu trong form có tên là title và web để truyền dữ liệu nhập từ bàn phím vào file post_demo.php. Tiếp theo ta sẽ code trên file post_demo.php để lấy dữ liệu và xuất ra màn hình. '; echo 'Title: ' . $_POST['title'] . ' Hãy test thử bằng cách chạy file demo.html lên theo đường link 'TanHongIT', 'website' => 'tanhongit.net' ]; ?>1 sau đó nhập vào các trường dữ liệu và nhấn vào button Submit. Lập tức Server sẽ tự động chuyển link sang file post_demo.php và xuất ra thông tin bạn đã nhập liệu. Nhưng có một điều khác biệt ở đây bạn cần quan tâm đó là khi sử dụng GET, đường dẫn URL sẽ tiết lộ bất kỳ thông tin mà bạn đã nhập liệu, còn khi đã dùng POST thì bị ẩn. Điều này chứng minh POST sẽ có tính bảo mật hơn GET và POST sẽ phù hợp với các chức năng về tạo dữ liệu, đăng ký, đăng nhập,… Những lưu ý cần biết trong phương thức POST trong PHP
Kiểm tra isset với GET và POST trong PHPTrước khi lấy một dữ liệu nào đó từ client bạn phải kiểm tra nó đã tồn tại không rồi mới lấy.Vì nếu không kiểm tra trước khi lấy, phía client chưa cung cấp đầy đủ dữ liệu mà server lại nhận thì sẽ có lỗi ngay. Vì thế ở những trường hợp mà ta không chắc chắn một biến luôn tồn tại hoặc một trường dữ liệu được nhập đầy đủ thì hãy kiểm tra nó trước khi gửi request. Để kiểm tra ta sẽ dùng hàm isset(). Hàm isset() trong PHP có chức năng kiểm tra xem biến có tồn tại hay không. Nó sẽ trả về TRUE nếu biến đó có tồn tại và ngược lại FALSE nếu biến đó không tồn tại. Hàm isset() sẽ dùng cho cả 2 phương thức GET và POST. Cú pháp: isset($bien); Trong đó: 'TanHongIT', 'website' => 'tanhongit.net' ]; ?>4 là biến mà bạn muốn kiểm tra sự tồn tại. Từ ví dụ về phần POST trong PHP ở trên, nếu bạn trực tiếp truy cập vào http://localhost/post_demo.php mà chưa nhập đầy đủ thông tin ở http://localhost/demo.html thì sẽ xuất hiện lỗi ngay. Vậy từ ví dụ trên ta chỉ cần thêm vào file file post_demo.php như sau: '; if (isset($_POST['title']) && isset($_POST['web'])) { echo 'Title: ' . $_POST['title'] . ' Bây giờ bạn hãy thử truy cập lại http://localhost/post_demo.php , nếu chưa đươc nhập đủ dữ liệu ở http://localhost/demo.html thì nó sẽ không hiện gì cả, còn nhập đầy đủ các trường dữ liệu thì nó mới hiện lên cho ta xem. Kết luận: Hàm isset() thật sự rất hữu ích đối với chúng ta trong việc ràng buộc dữ liệu nên các bạn hãy thường xuyên sử dụng để hiểu rõ và áp dụng dễ dàng hơn sau này nhé! So sánh giống và khác nhau giữa GET và POSTGET và POST hầu như chẳng có gì giống nhau ngoài tác dụng là truyền tải dữ liệu lên Server. Cho nên mình sẽ nói về những đặc điểm khác nhau của 2 phương thức này nhé!
Link tham khảo: https://www.diffen.com/difference/GET-vs-POST-HTTP-Requests Khi nào nên dùng GET và POST trong PHPCả 2 phương thức đều có những ưu và nhược điểm khác nhau, vậy khi nào chúng ta nên dùng GET và khi nào nên dùng POST. Phương thức GET có tốc độ thực thi nhanh như độ bảo mật lại rất kém nên GET chỉ nên dùng cho các công việc lấy dữ liệu từ server về client, như vậy quá trình truy xuất sẽ nhanh hơn. Đối với POST sẽ có độ bảo mật cao nên phù hợp với các công việc tạo dữ liệu, upload, truyền tải thông tin lên server, những công việc mang tính bảo mật cao. Ví dụ:
Kết thúcQua bài viết trên mình đã nếu ra những nội dung liên quan đến 2 phương thức method truyền tải dữ liệu thông dụng trong PHP là GET và POST. Các bạn cần phải hiểu rõ những tính chất của mỗi phương thức này và khi nào nên dùng nó tùy vào từng trường hợp cụ thể. Nhưng có một điều lưu ý rằng những nội dung, dữ liệu quan trọng hoặc cần truyền tải một loại thông tin gì đó lên server thì ta phải dùng POST để tăng tính bảo mật cho Website nhé!
|