Định nghĩa và cách dùng PHP _GET và _POST
- PHP
_GET
và_POST
là hai phương thức dùng để thu thập dữ liệuform
, đây cũng là phương thức dùng để chuyển dữ liệu từ máy cá nhân (client) lên máy chủ (server). - Cả hai
_GET
và_POST
đều tạo một mảng với cặpkey/value
, với key chính là thuộc tínhname
của các thành phần form, còn value chính là giá trị của thành phần đó vớiname
tương ứng. _GET
thường dùng cho dữ liệu không quan trọng, không cần bảo mật, thể hiện rõ trên tham số khi submit hay click từ liên kết._POST
thường dùng cho dữ liệu quan trọng, cần bảo mật như thông tin login, payment, ..._POST
nhận được thông qua phương thức HTTP.
_GET
_GET
có thể được nhận biết thông qua 2 cách:
_GET
thu thập dữ liệu form sau khi được gửi (submit) thông qua thuộc tínhmethod="get"
_GET
cũng có thể thu thâp dữ liệu được gửi thông qua đường dẫn URL trên thanh địa chỉ.
_GET NHẬN BIÉT GIÁ TRỊ QUA FORM
<form action="processing.php" method="get"> Điện thoại: <input type="text" name="phone"> <button type="submit">Gửi</button> </form>
- Tham số
processing.php
trongaction
chính là trang chứa code xử lý. method="get"
là thuộc tính xác định phương thức, ở đây là_GET
.name="phone"
chính là key nhận biết thành phần được xử lý.button type="submit"
chính là nơi tạo hành động khi người dùng click.
Ví dụ
<form action="php_get_post.php" method="get"> Điện thoại: <input type="text" name="phone"> <button type="submit">Gửi</button> </form>
Điền giá trị 0123456 và click nút Gửi, thông tin sẽ gửi tới trang xử lý php_get_post.php (hiện tại đang sử dụng chính trang hiện hành), khi này đường dẫn trên thanh địa chỉ có dạng php_get_post.php?phone=0123456
Xử lý giá trị
- Cách lấy dữ liệu
_GET
, ta sử dụng cấu trúc$_GET[key]
. - Dùng câu lệnh
if
để xác định xem có tồn tại phương thức_GET
hay không, trước khi nhận giá trị.
VD bên dưới key
chính là giá trị phone
của thuộc tính name
.
Sử dụng if(isset($_GET["phone"]))
để kiểm tra xem $_GET["phone"]
đã tồn tại hay chưa, nếu không kiểm tra sẽ báo lỗi khi chưa tồn tại, xem thêm tại isset() - PHP các hàm thường dùng.
<form action="php_get_post.php" method="get"> Điện thoại: <input type="text" name="phone"> <button type="submit">Gửi</button> </form> Thông tin nhận được <?php if(isset($_GET["phone"])) { echo $_GET["phone"]; } ?>
Thử thay đổi nhiều giá trị khác nhau của input
sau đó click button
Gửi để xem nhiều kết quả khác nhau.
_GET NHẬN BIẾT GIÁ TRỊ QUA URL
Ta thấy khi submit form, thì tham số trên thanh địa chỉ có dạng: php_get_post.php?phone=0123456, dựa vào đó ta cũng có thể tạo tham số tương tự như vậy trên thanh địa chỉ thông qua tag <a>
<a href="php_get_post.php?phone1=0123456">Click tạo phương thức GET</a><br> Thông tin nhận được <?php if(isset($_GET["phone1"])) { echo $_GET["phone1"]; } ?>
Thông tin nhận được
_GET NHIỀU GIÁ TRỊ CÙNG LÚC
Đối với nhiều giá trị _GET
thì tham số nhận được có dạng: php_get_post.php?phone=0123456&address=hocwebchuan, dựa vào đó ta có thể tạo giá trị key/value
tương ứng.
Đối với form
<form action="php_get_post.php" method="get"> Điện thoại: <input type="text" name="phone2"><br> Địa chỉ: <input type="text" name="address2"> <button type="submit">Gửi</button> </form> Phone: <?php if(isset($_GET["phone2"])) { echo $_GET["phone2"]; } ?><br> Address: <?php if(isset($_GET["address2"])) { echo $_GET["address2"]; } ?>
Address:
Thử điền giá trị và click Gửi, sẽ thấy thanh địa chỉ đã có tham số mới.
Đối với URL
<a href="php_get_post.php?phone3=sdfsdfsdf&address3=sdfsdfsdf">Click tạo phương thức GET</a><br> Phone: <?php if(isset($_GET["phone3"])) { echo $_GET["phone3"]; } ?><br> Address: <?php if(isset($_GET["address3"])) { echo $_GET["address3"]; } ?>
Thử click vào link sẽ thấy thanh địa chỉ đã có tham số mới.
_POST
Nhận dữ liệu thông qua phương thức _POST
PHP viết
<form action="php_get_post.php" method="post"> Username: <input type="text" name="user"><br> Password: <input type="password" name="password"><br> <button type="submit">Gửi</button> </form>
- Ta thấy, khi điền dữ liệu và nhấn submit, thì trình duyệt không còn thể hiện tham số trên thanh địa chỉ, đây chính là điểm khác biệt giữa
_POST
và_GET
. - Với cách xử lý này
_POST
được dùng cho những thông tin có tính bảo mật, hoặc quan trọng.
Xử lý giá trị
- Tương tự như cách lấy dữ liệu của
_GET
, đối với_POST
ta cũng sử dụng cấu trúc tương tự$_POST[key]
. - Dùng câu lệnh
if
để xác định xem có tồn tại phương thức_POST
hay không, trước khi nhận giá trị.
<form action="php_get_post.php" method="post"> Username: <input type="text" name="user"><br> Password: <input type="password" name="password"><br> <button type="submit">Gửi</button> </form> Username vừa nhập: <?php if(isset($_POST["user"])) { echo $_POST["user"]; } ?> <br> Password vừa nhập: <?php if(isset($_POST["password"])) { echo $_POST["password"]; } ?>
Password vừa nhập: