Phương thức get và post trong php – Freetuts

Trải qua 18 bài chúng ta học toàn lý thuyết nên có vẻ hơi nhàm chán, và để giảm căng thẳng thì hôm nay chúng ta sẽ đi tìm hiểu một vài thứ hấp dẫn hơn, đó là phương thức truyền dữ liệu từ Client lên Server.

test php

banquyen png

Bài viết này được đăng tại

freetuts.net

, không được copy dưới mọi hình thức.

Như những bạn biết bộ mã nguồn web viết bằng PHP được đưa lên host và đó chính là Server, còn khi những bạn truy vấn sử dụng website thì bạn chính là một Client. Khi những bạn đăng nhập hay ĐK thông tin tài khoản, hoặc là những bạn đăng comment thì tài liệu sẽ được gửi từ client lên Server, vậy làm thế nào để Server nhận được những thông tin của bạn ? Server sẽ nhận được trải qua hai phương pháp POST và GET .
Có 2 cách gửi tài liệu từ Client lên Server đó là dùng phương pháp GET hoặc phương pháp POST, cả 2 cách này thực chất lập trình viên mới biết chứ người dùng họ không chăm sóc đến nó là cái gì, trừ khi là hacker : D. Để không mất thời hạn nữa ta sẽ đi vào tìm hiểu và khám phá từng cách, so sánh chúng với nhau và bàn luận xem khi nào ta dùng POST và khi nào ta dùng GET nhé .
Nội dung bài học kinh nghiệm của tất cả chúng ta như sau :

  • Phương thức GET trong PHP
  • Phương thức POST trong PHP
  • So sánh giữa POST và GET

1. Phương thức GET trong PHP

Phương thức GET rất dễ nhận thấy đó là trên URL sẽ kèm theo tài liệu mà tất cả chúng ta muốn gửi

Client gửi lên

Phương thức GET là phương pháp gửi tài liệu trải qua đường dẫn URL nằm trên thanh địa chỉ của Browser. Server sẽ nhận đường dẫn đó và nghiên cứu và phân tích trả về hiệu quả cho bạn. Server sẽ nghiên cứu và phân tích tổng thể những thông tin đằng sau dấu hỏi ( ? ) chính là phần tài liệu mà Client gửi lên .

Ví dụ: Với URL freetuts.net?id=12 thì Server sẽ nhận được giá trị id = 12

Để truyền nhiều dữ liệu lên Server ta dùng dấu & để phân cách giữa các cặp giá trị. Giả sử tôi muốn truyền id = 12 title = ‘method_get’ thì URL sẽ có dạng freetuts.net?id=12&title=method_get. Lưu ý với các bạn là vị trí các cặp giá trị không quan trọng, nghĩa là cặp title có thể nằm trước cặp id cũng được.

Server nhận dữ liệu

Tất cả 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, biến này là kiểu mảng kết hợp lưu trữ danh sách dữ liệu từ client gửi lên theo quy luật key => value. Ví du với URL freetuts.net?id=12&title=method_get thì dữ liệu sẽ được lưu trong biến $_GET dưới dạng:

$_GET = array(
    'id' => '12',
    'title' => 'method_get'
);

Vì thế để lấy tài liệu thì ta chỉ cần làm như sau :

// Lấy ID
$id = $_GET['id'];
echo $id; // kết quả là 12
 
// Lấy title
$title = $_GET['title'];
echo $title; // kết quả là method_get

Thực hành:

Bạn hãy tạo một file get.php nằm trong thư mục WWW của Vertrigo Server hoặc thư mục htdocs của Xampp, sau đó bạn copy đoạn code này vào:

echo 'Dữ Liệu Chúng Tôi Nhận Được Là 
'; foreach ($_GET as $key => $val) { echo ''. $key. ' => '. $val. '
'; }

Sau đó bạn ra trình duyệt gõ đường dẫn sau: localhost/get.php?id=12&title=method_get và ngắm nhìn thành quả nhé. Bạn hãy thử thay đổi hoặc thêm các giá trị xem có gì khác không.

Lưu ý quan trọng:

Trước khi lấy một dữ liệu nào đó bạn phải kiểm tra tồn tại không không mới lấy nhé, vì nếu bạn không kiểm tra thì giả sử người dùng không truyền dữ liệu qua mà bạn lại nhận thì sẽ bị báo lỗi ngay. Để kiểm tra ta dùng hàm isset($tenbien) trong php.

Ví dụ :

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

2. Phương thức POST trong PHP

Phương thức POST có tính bảo mật thông tin hơn vì tài liệu gửi phải trải qua một form HTML nên nó bị ẩn, nghĩa là tất cả chúng ta không hề thấy những giá trị đó được .

Client Gửi Lên

Với phương pháp GET thì tài liệu được thấy trên URL thì phương pháp POST thì trọn vẹn ngược lại, POST sẽ gửi tài liệu qua một cái form HTML và những giá trị sẽ được định nghĩa trong những input gồm những kiểu ( textbox, radio, checkbox, password, textarea, hidden ) và được nhận dang trải qua tên ( name ) của những input đó .

Server nhậ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'];
}

Thực hành

Bước 1: Bạn tạo một file post.php nằm trong thư mục WWW của Vertrigo Server hoặc thư mục htdocs của Xampp, sau đó nhập đoạn code tạo form này vào:





    
        
        
    
    
        
Username:
password:

Bước 2: Bạn mở trình duyệt gõ đường dẫn localhost/post.php và ngắm nghía cái form mình vừa tạo ra nhé.

Bước 3: Bạn sửa lại đoạn mã HTML đó bằng cách thêm vào một đoạn mã PHP như sau:





    
        
       
    
    
        
Username:
password:

'; echo 'Mật khẩu là: '. $_POST['password']; } ?>

Bước 4 : Bạn refresh lại trình duyệt rồi nhập tên đăng nhập và mật khẩu vào, sau đó nhấn vào button ” Gửi Dữ Liệu ” và nhìn thành quả của mình nhé .

phuong thuc post trong php png

3. So sánh giữa POST và GET

Để những bạn hiểu rõ hơn về hai phương pháp POST và GET thì tất cả chúng ta cùng so sánh một chút xíu .

Giống nhau:

Đều gửi tài liệu lên Server

Khác nhau:

Phương thức POST bảo mật thông tin hơn GET vì tài liệu được gửi ngầm bằng mắt thường không hề nhìn thấy được .
Phương thức GET dữ liệu được gửi tường minh, tất cả chúng ta hoàn toàn có thể thấy trên URL nên nó không bảo mật thông tin .
Phương thức GET luôn luôn nhanh hơn POST vì tài liệu gửi đi được Browser giữ lại trong cache. Khi thực thi với POST thì Server luôn thực thi lệnh rồi trả về cho Client, còn với GET thì Browser sẽ kiểm tra trong cache có chưa, nếu có thì trả về ngay chứ không cần gửi lên Server .

Khi nào dùng GET – POST

Khi tài liệu bạn muốn SEO thì phải sử dụng phương pháp GET .
Khi tài liệu bạn không cần bảo mật thông tin thì dùng phương pháp GET, ngược lại tài liệu bảo mật thông tin thì dùng phương pháp POST .

Ví dụ khi đăng nhập, Comment, đăng tin dùng phương thức POST. Còn khi lấy tin ra thì dùng phương thức GET…

Khi request sử dụng câu lệnh select thì dùng GET, khi request có sử dụng lệnh insert update, delete thì nên dùng POST .

4. Lời Kết

Việc sử dụng phương pháp GET và phương pháp POST còn tùy thuộc vào từng bài toán đơn cử mà ta lựa chọn chứ không hề xác lập đúng chuẩn được. Tuy nhiên những tín hiệu mình nói ở trên hoàn toàn có thể giúp ta một phần nào quyết định hành động để có sự lựa chọn đúng chuẩn. Bài tiếp theo tất cả chúng ta sẽ tìm hiểu và khám phá những hàm giải quyết và xử lý chuỗi trong php, chúc những bạn vui tươi và thành công xuất sắc .