PHP _GET và _POST
PHP _GET và _POST là hai phương thức dùng để thu thập dữ liệu form, đâ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).
Đị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ông tin nhận được
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"]; } ?>
Click tạo phương thức GET
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=LTH, 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"]; } ?>
Phone:
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"]; } ?>
Click tạo phương thức GET
Phone:
Address:
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"]; } ?>
Username vừa nhập:
Password vừa nhập: