PHP - GET & POST: Hiểu biết về Truyền tải Dữ liệu trong Phát triển Web

Xin chào các bạn đang học lập trình web! Hôm nay, chúng ta sẽ cùng tìm hiểu một trong những khái niệm cơ bản nhất trong PHP và phát triển web: phương thức GET và POST. Là một giáo viên khoa học máy tính gần gũi, tôi rất vui được hướng dẫn các bạn trong hành trình này. Vậy, hãy chuẩn bị đồ uống yêu thích của bạn, thư giãn và bắt đầu nào!

PHP - GET & POST

Phương thức GET

Phương thức GET giống như gửi một bưu thiếp. Mọi thứ bạn viết đều có thể nhìn thấy bởi bất kỳ ai xử lý nó trên đường đi. Nó đơn giản, rõ ràng và hoàn hảo cho thông tin không nhạy cảm.

Cách GET hoạt động

Khi bạn sử dụng phương thức GET, dữ liệu được thêm vào URL dưới dạng cặp tên-giá trị. Hãy xem một ví dụ:

<a href="welcome.php?name=John&age=25">Nhấp vào tôi!</a>

Trong ví dụ này, khi bạn nhấp vào liên kết, bạn sẽ được chuyển hướng đến "welcome.php" với hai thông tin: tên (John) và tuổi (25).

Lấy dữ liệu GET

Ở đầu nhận (welcome.php), bạn có thể truy cập dữ liệu này bằng cách sử dụng mảng siêu toàn cục $_GET:

<?php
echo "Chào mừng, " . $_GET['name'] . "! Bạn " . $_GET['age'] . " tuổi.";
?>

Điều này sẽ hiển thị: "Chào mừng, John! Bạn 25 tuổi."

Nhớ nhé, các bạn, GET rất tốt cho truy vấn tìm kiếm, lọc hoặc bất kỳ dữ liệu nào bạn không介意 hiển thị trong URL.

Phương thức POST

Bây giờ, hãy nói về POST. Nếu GET giống như một bưu thiếp, thì POST giống như một envelop niêm phong. Nó an toàn hơn và có thể xử lý lượng dữ liệu lớn hơn.

Cách POST hoạt động

POST gửi dữ liệu trong phần thân của yêu cầu HTTP, không phải trong URL. Dưới đây là một biểu mẫu đơn giản sử dụng POST:

<form action="process.php" method="POST">
<input type="text" name="username" placeholder="Nhập tên người dùng">
<input type="password" name="password" placeholder="Nhập mật khẩu">
<input type="submit" value="Đăng nhập">
</form>

Lấy dữ liệu POST

Trong process.php, bạn có thể truy cập dữ liệu đã gửi như sau:

<?php
$username = $_POST['username'];
$password = $_POST['password'];

echo "Đang thử đăng nhập người dùng: " . $username;
// Đừng echo mật khẩu trong các ứng dụng thực tế!
?>

POST rất phù hợp cho việc gửi dữ liệu nhạy cảm như mật khẩu hoặc lượng thông tin lớn.

Sự khác biệt giữa GET và POST

Hãy phân tích các khác biệt chính:

Tính năng GET POST
Hiển thị Dữ liệu hiển thị trong URL Dữ liệu không hiển thị trong URL
Bảo mật Ít an toàn An toàn hơn
Kích thước dữ liệu Giới hạn (khoảng 2000 ký tự) Không có giới hạn严格
Lưu cache Có thể lưu cache Thường không lưu cache
Lưu lại Có thể lưu lại Không thể lưu lại
Sử dụng Lấy dữ liệu Gửi dữ liệu

Mảng $_GET

Mảng $_GET là một mảng siêu toàn cục trong PHP thu thập tất cả dữ liệu GET. Nó giống như một giỏ phép màu bắt tất cả dữ liệu gửi qua GET.

Ví dụ:

Giả sử bạn có một URL: search.php?category=books&author=rowling

Trong search.php, bạn có thể truy cập dữ liệu này như sau:

<?php
$category = $_GET['category'];
$author = $_GET['author'];

echo "Tìm kiếm $category của $author";
?>

Điều này sẽ hiển thị: "Tìm kiếm books của rowling"

Mảng $_POST

Tương tự, $_POST là một mảng siêu toàn cục thu thập tất cả dữ liệu POST. Nó giống như một két an toàn nơi lưu trữ tất cả dữ liệu POST.

Ví dụ:

Giả sử bạn có một biểu mẫu POST đến process.php:

<?php
$email = $_POST['email'];
$message = $_POST['message'];

echo "Nhận được tin nhắn từ $email: $message";
?>

Nhớ nhé, các bạn, luôn làm sạch và xác thực đầu vào của người dùng trước khi sử dụng nó trong ứng dụng của bạn. Tin tôi đi, tôi đã thấy những điều kỳ lạ xảy ra khi các nhà phát triển quên điều này!

Bài tập Thực hành

Hãy kết hợp tất cả lại với một bài tập nhỏ thú vị. Hãy tưởng tượng chúng ta đang xây dựng một trò chơi "Đoán số".

  1. Tạo một biểu mẫu (phương thức GET) để nhập một猜测:
<form action="guess.php" method="GET">
<input type="number" name="guess" placeholder="Nhập猜测 của bạn (1-100)">
<input type="submit" value="Đoán!">
</form>
  1. Trong guess.php, xử lý猜测:
<?php
$secretNumber = 42; // Số bí mật của chúng ta
$guess = isset($_GET['guess']) ? (int)$_GET['guess'] : 0;

if ($guess == $secretNumber) {
echo "Chúc mừng! Bạn đã đoán đúng!";
} elseif ($guess < $secretNumber) {
echo "Quá thấp! Hãy thử lại.";
} else {
echo "Quá cao! Hãy thử lại.";
}
?>

Trò chơi đơn giản này minh họa cách sử dụng GET để gửi và nhận dữ liệu, và cách xử lý nó trong PHP.

Cuối cùng, việc hiểu phương thức GET và POST rất quan trọng đối với bất kỳ nhà phát triển PHP nào. Chúng giống như dịch vụ bưu điện của web, truyền tải dữ liệu qua lại giữa khách hàng và máy chủ. Nhớ rằng, sử dụng GET khi bạn không介意 dữ liệu của mình được mọi người thấy, và POST khi bạn muốn giữ mọi thứ bí mật.

Khi kết thúc, tôi nhớ lại một học sinh曾经说过, "GET và POST giống như nói chuyện công khai và lén lút. Đôi khi bạn muốn mọi người nghe, và đôi khi bạn không!" Tôi không thể nói tốt hơn được.

Hãy tiếp tục thực hành, 保持好奇心, và chúc các bạn lập trình vui vẻ!

Credits: Image by storyset