Wednesday, April 6, 2016

Sự khác nhau giữa POST và GET trong PHP

Tags

Chào các bạn, như các bạn đã biết trong PHP để truyển dữ liệu từ client tới server ta có thể dùng phương thức GET và POST , nhưng chức năng của chúng như thế nào, hãy cùng yoyovolam tìm hiểu nha.



1.Khái niệm

  • GET
Là phương thức truyền dữ liệu không bảo mật vì dữ liệu truyền đi sẽ được show lên thanh address của trình duyệt .Khối lượng dữ liệu truyền đi bị giới hạn bởi chiều dài tốt đa của 1 URL(2048 bytes).Dữ liệu gửi đi được trình duyệt cached lại.

Dữ liệu được truyền qua biến $_GET:

Ưu điểm của phương thức này là truyền dữ liệu nhanh, người dùng có thể bookmark lại địa chỉ URL

Ví dụ:
Chúng ta sẽ tạo 2 file demoget1.php và demoget2.php để minh họa cho phương thức GET , demoget1.php có nhiệm vụ truyền dữ liệu qua demoget2.php bằng GET, lưu ý mình chạy trên localhost cho dễ nha.


Nội dung của 2 file:



demoget2.php



Kết quả chạy thử 

Truy cập trên trình duyệt của bạn
http://localhost/<Thư mục của bạn>/demoget1.php


Nhấn Login

  • Dữ liệu gồm txtUserName txtPassword sẽ được truyền qua file demoget2.php 
  • *** Dấu ? trên trình duyệt dùng để phân biệt tên file demotest2.php với 2 biến txtUserName và txtPassword 

  • *** Lưu ý dữ liệu khi gửi lên server sẽ được lưu vào biến toàn cục $_GET là mảng kết hợp lưu trữ giá trị gửi lên trong 1 mảng với qui luật key=>giá trị



$_GET = array(

    'id' => '1',
    'title' => 'method_get'
);

Với file demoget1.php để lấy giá trị của biến txtUserName và txtPassword ta làm như sau:
$ten = $_GET['txtUserName']
$pass =$_GET['txtPassword ']
      echo $ten 
      echo $pass
  • POST


Là phương thức truyền dữ liệu bảo mật không thông qua URL.Dữ liệu gửi đi dưới dạng ẩn , có thể gửi dữ liệu lớn tùy thuộc vào cấu hình của server.

Dữ liệu mỗi lần gửi đi không được trình duyệt cached lại nên mỗi lần gửi cần phải submit lại

Biến $_POST được sử dụng khi truyền dữ liệu

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ế để lấy dữ liệu thì bạn chỉ cần lấy trong biến này là được. Cũng như lưu ý với các bạn là trước khi lấy phải dùng hàm isset($bien) để kiểm tra có hay không nhé.

if (isset($_POST['id'])){
    $id = $_POST['id'];
}

Ví dụ
Bạn tạo file demopost.php với nội dung như sau:


Chạy file demopost.php
http://localhost/<Thư mục của bạn>/demopost.php

Nhập Username và pass sau đó nhấn send
Username và Password sẽ hiện lên,và dữ liệu được gửi ẩn không hiện lên thanh address
2.Khi nào sử dụng phương thức GET và POST

  • - Do cả 2 đều là phương thức gửi dữ liệu ,và mỗi loại thì có ưu nhược điểm riêng nên tùy nhu cầu mà ta sẽ sử dụng
  • Khi dữ liệu không bảo mật ta dùng GET: lấy tin, viết bài SEO, dữ sẽ được lưu lại trên browser do đó thực thi sẽ nhanh hơn
  • Khi dữ liệu cần gửi đi bảo mật ta dùng POST: mật khẩu, tài khoản

  • ***** Ngoài ra còn có phương thức REQUEST bao gồm cả GET,POST và Cookie giúp bạn lấy dữ liệu bất kể form có phương thức là POST hay GET.
  • Phương thức này sử dụng biến $_REQUEST để lấy dữ liệu
  • $REQUEST: chứa cả $GET và $POST, trong đó $POST sẽ ghi đè lên $_GET nếu trùng key


Cảm ơn bạn đã theo dõi bài viết về cách phân biệt 2 phương thức get và post
Bài viết có tham khảo từ :http://freetuts.net/phuong-thuc-get-va-post-trong-php-19.html


Bài Viết Liên Quan