Gửi và nhận dữ liệu qua URL (GET) và Form (POST)

jk5587725

By jk5587725

Cập nhật Tháng 9 23, 2025

Ở chương trước, bạn đã làm quen với các cấu trúc điều khiển, vòng lặp và cách tổ chức logic cơ bản trong PHP. Nhưng lập trình web đâu chỉ dừng lại ở đó. Sức mạnh thật sự của PHP nằm ở khả năng tương tác linh hoạt với người dùng – thông qua form, qua URL, qua thao tác click đơn giản trên trình duyệt.

Và để làm được điều đó, chúng ta phải học cách PHP “giao tiếp” với trình duyệt – cụ thể là cách nhận dữ liệu khi người dùng gửi từ form hoặc gõ thẳng lên thanh địa chỉ (URL). Đây là nền tảng cho mọi trang web động: từ trang tìm kiếm, đăng ký, đăng nhập cho đến giỏ hàng và hệ thống quản trị.


Nhận dữ liệu từ URL: $_GET

Bạn có thể truyền dữ liệu qua URL như sau:

https://example.com/welcome.php?name=John&age=30

Trong file welcome.php, bạn có thể lấy giá trị các biến như sau:

<?php
$name = $_GET['name'];
$age = $_GET['age'];

echo "Xin chào $name, bạn $age tuổi.";
?>

📌 Ghi chú:

  • Biến $_GET là một mảng siêu toàn cục (superglobal array) chứa dữ liệu từ URL.
  • Các biến truyền qua URL luôn ở dạng chuỗi.
  • Đây là cách đơn giản và nhanh để test hoặc tạo các liên kết động, nhưng không an toàn để xử lý thông tin nhạy cảm (ví dụ: mật khẩu).

Gửi dữ liệu qua form: $_POST

Một form HTML gửi dữ liệu như sau:

<form action="submit.php" method="POST">
  <label>Họ tên:</label>
  <input type="text" name="fullname">
  <button type="submit">Gửi</button>
</form>

Trong file submit.php, bạn sẽ nhận được dữ liệu thế này:

<?php
$fullname = $_POST['fullname'];
echo "Cảm ơn bạn, $fullname, đã gửi thông tin!";
?>

📌 Ghi chú:

  • Biến $_POST nhận dữ liệu từ form dùng phương thức POST.
  • Dữ liệu không hiển thị trên URL nên bảo mật hơn so với GET.
  • Đây là phương thức chuẩn cho các form đăng nhập, đăng ký, liên hệ, v.v.

Nên dùng GET hay POST?

Tiêu chíGETPOST
Hiển thị trên URLKhông
Giới hạn độ dàiCó (tùy trình duyệt, thường < 2048 ký tự)Gần như không giới hạn
Bảo mậtKémTốt hơn
Bookmark đượcKhông
Dùng khi nào?Tìm kiếm, lọc, phân trangĐăng nhập, đăng ký, gửi form

Bẫy thường gặp

  • Nếu bạn dùng $_POST['email'] mà form không gửi giá trị email, PHP sẽ cảnh báo lỗi nếu bạn chưa kiểm tra tồn tại. 👉 Dùng isset() để kiểm tra: if (isset($_POST['email'])) { $email = $_POST['email']; } else { $email = ''; }

Bài tập áp dụng

  1. Tạo một form HTML với 2 ô nhập: họ tên và email. Gửi dữ liệu qua POST, xử lý và hiển thị lại kết quả trong PHP.
  2. Viết một liên kết như sau: test.php?product=Book&price=200. Trong test.php, hiển thị tên sản phẩm và giá từ URL.
  3. Làm thêm: nếu có thời gian, thử gửi dữ liệu từ form qua GET để thấy sự khác biệt.

Gợi ý học thêm

  • Nếu bạn chưa quen với HTML Form, bạn nên học qua [Khóa học HTML & CSS cơ bản] hoặc [Chương 2 – HTML Form] trong môn học HTML cơ bản nhé.
  • Sắp tới chúng ta sẽ học cách xử lý form một cách an toàn hơn, nên đừng lo nếu bạn thấy vẫn còn sơ khai.

Chúc mừng bạn đã hoàn thành bài học đầu tiên của chương 2. Từ đây, bạn đã bước vào thế giới của những ứng dụng web thật sự – nơi người dùng và hệ thống “nói chuyện” với nhau. Tiếp theo, chúng ta sẽ học cách Kiểm tra và lọc dữ liệu đầu vào (validate + sanitize) và cải thiện trải nghiệm người dùng.

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.