Search…

Phương Thức Truyền và Nhận Dữ Liệu POST, GET Trong PHP

09/09/20204 min read
Cơ chế truyền dữ liệu với phương thức POST và GET trong PHP.

Giới thiệu về form trong HTML

Form là 1 đối tượng (hoặc cụ thể hơn là thẻ <form>) trong HTML dùng để nhận dữ liệu từ người dùng, giúp gửi yêu cầu của người dùng đến trang xử lý trong trang web.

Form đăng ký tài khoản

Thẻ <form> trong HTML là một container chứa các thành phần nhập liệu, các thành phần trong form gọi là Form Field như:

  • Text Field.
  • Password Field.
  • Check Box.
  • Button.
  • ...

Cú pháp: 

<form name="..." action="..." method="...">
    Các thành phần của form
</form>

Các thuộc tính của form:

  • name: tên của form.
  • action: chỉ định trang web sẽ nhận dữ liệu từ khi form có sự kiện click button submit.
  • method: xác định phương thức truyền dữ liệu (POST, GET).

Tìm hiểu POST và GET trong PHP

POST, GET là phương thức truyền dữ liệu trong form từ trang này qua trang khác và khối lượng dữ liệu truyền đi của form bị giới hạn bởi chiều dài tối đa của một URL (chiều dài tối đa của một URL là 2048 bytes và giới hạn này cũng phụ thuộc vào trình duyệt web).

Để truyền được dữ liệu trong form từ trang này sang trang khác có những yêu cầu sau:

  • Dữ liệu cần truyền phải nằm trong cặp thẻ <form></form>.
  • Dữ liệu cần truyền phải nhập vào các form field.
  • Dữ liệu chỉ được truyền đi khi nhấn button submit.

Để demo trong quá trình trình bày tạo 2 file .phpa.phpb.php trong thư mục C:\xampp\htdocs\DemoPostGet.


Trong đó file a.php sẽ có một form chứa các trường dữ liệu là usernamepassword do người dùng nhập vào. File b.php sẽ lấy các thông tin từ form bên trang a.php truyền sang và hiển thị lên trình duyệt khi nhất button submit. Để nhận dữ liệu từ form truyền qua sử dụng biến toàn cục trong PHP.

  • Nếu dùng phương thức POST: $_POST[‘field_name’].
  • Nếu dùng phương thức GET: $_GET[‘field_name’].
  • Nếu không xác định được phương thức truyền: $_REQUEST[‘field_name’].

Giống nhau

Phương thức POST và GET đều là cơ chế truyền dữ liệu trong form từ trang này sang khác.

Khác nhau

Phương thức POST

Các dữ liệu của form được truyền ngầm và dữ liệu truyền đi không phụ thuộc vào URL.

Ưu điểm
  •  Bảo mật hơn phương thức GET.
  •  Không giới hạn dung lượng dữ liệu truyền đi.
Nhược điểm

 Dữ liệu truyền đi không tường mình (cơ chế truyền ngầm định) do đó sẽ phát sinh lỗi tiềm ẩn.

Demo 

File a.php sử dụng phương thức POST:

<html>
	<head></head>
	<title>Demo Post and Get</title>
	<body>
		<form name="frmLogin" action="b.php" method="post">
			<label>User Name: </label>
			<input type="text" name="txtUserName"/><br/>
			<label>Password: </label>
			<input type="password" name="txtPassword" /><br/>
			<input type="submit" value="Log in"/><br/>
		</form>
	</body>
</html>

Kết quả khi chạy trên trình duyệt file a.php

File b.php sử dụng biến toàn cục $_POST để lấy dữ liệu từ form truyền sang.

<html>
	<head>
	</head>
	<body>
		<?php
			$username = $_POST['txtUserName'];
			$password = $_POST['txtPassword'];
			echo "<p>UserName : ".$username."</p>";
			echo "<p>Password : ".$password."</p>";
		?>
	</body>
</html>

Nhập UserNamePassword.

Nhấn submit sẽ thấy dữ liệu được truyền ngầm định mà không hiện lên ở URL.

Phương thức GET

Các dữ liệu đường truyền đi được hiển thị lên URL của trình duyệt và dữ liệu truyền đi phụ thuộc vào độ dài đối đa của URL.

Ưu điểm
  • Người dùng có thể bookmark lại địa chỉ URL.
  • Người dùng có thể giả lập lại phương thức GET để truyền dữ liệu mà không cần thông qua form (sử dụng query string).
Nhược điểm
  • Không thích hợp truyền dữ liệu có tính bảo mật như password (do dữ liệu có thể xuất hiện rõ ràng trên trình duyệt web).
  • Dung lượng dữ liệu truyền đi có giới hạn (phụ thuộc vào độ dài tối đa của URL).
Demo

File a sử dụng phương thức GET

<html>
	<head></head>
	<title>Demo Post and Get</title>
	<body>
		<form name="frmLogin" action="b.php" method="get">
			<label>User Name: </label>
			<input type="text" name="txtUserName"/><br/>
			<label>Password: </label>
			<input type="password" name="txtPassword" /><br/>
			<input type="submit" value="Log in"/> <br/>
		</form>
	</body>
</html>

File b.php sử dụng biến toàn cục $_GET để lấy dữ liệu từ form truyền sang.

<html>
	<head>
	</head>
	<body>
		<?php
			$username = $_GET['txtUserName'];
			$password = $_GET['txtPassword'];
			echo "<p>UserName : ".$username."</p>";
			echo "<p>Password : ".$password."</p>";
		?>
	</body>
</html>

Chạy file a.php sau đó nhập nội dung như trường hợp sử dụng phương thức POST sẽ thấy kết quả là các dữ liệu được truyền đi được hiển thị lên URL của trình duyệt. Lưu ý là dữ liệu truyền đi là có giới hạn phụ thuộc vào độ dài của URL (tối đa 2048 bytes).

Download source code.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024