Định nghĩa và cách dùng PHP _GET và _POST
- PHP
_GETvà_POSTlà 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
_GETvà_POSTđều tạo một mảng với cặpkey/value, với key chính là thuộc tínhnamecủa các thành phần form, còn value chính là giá trị của thành phần đó vớinametương ứng. _GETthườ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._POSTthường dùng cho dữ liệu quan trọng, cần bảo mật như thông tin login, payment, ..._POSTnhậ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:
_GETthu thập dữ liệu form sau khi được gửi (submit) thông qua thuộc tínhmethod="get"_GETcũ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.phptrongactionchí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_GEThay 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
_POSTvà_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_POSTta 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_POSThay 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:

