Phiên và biểu mẫu trong PHP
Giả sử chúng ta có hai tệp PHP. Hãy đặt một biểu mẫu
trong tệp test1.php, hỏi
người dùng hai số:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
Trong cùng tệp này, hãy đặt mã xử lý biểu mẫu. Trong mã này, chúng ta sẽ ghi dữ liệu từ các input vào phiên:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Một điểm quan trọng: trong tệp, mã xử lý biểu mẫu phải đứng trước chính biểu mẫu đó. Tại sao: bởi vì trong mã này chúng ta làm việc với phiên, và do đó không được có bất kỳ đầu ra nào lên màn hình trước đó.
Bây giờ hãy trong tệp test2.php tìm
tổng của các số đã lưu trong phiên:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
Trình tự hoạt động của tất cả những điều này nên như thế nào?
Đầu tiên, người dùng truy cập trang
test1.php, điền vào biểu mẫu
và nhấn nút. Sau đó, họ lại đến
trang test1.php, nhưng lần này với dữ liệu
biểu mẫu đã gửi. Khi đó, họ rơi vào điều kiện,
nơi chúng ta ghi dữ liệu biểu mẫu vào phiên.
Sau đó, người dùng phải tự truy cập vào
trang test2.php - và ở đó họ sẽ thấy
tổng của các số đã nhập.
Bạn có thể hỏi: tại sao phải phức tạp vậy? Rốt cuộc,
chúng ta có thể gửi biểu mẫu ngay đến trang
test2.php mà. Vấn đề là, trong trường hợp
này, sự tiện lợi nằm ở chỗ chính biểu mẫu và mã
xử lý nó được đặt trên cùng một trang.
Tất nhiên, điều này không phải lúc nào cũng tiện lợi, nhưng đôi khi
lại cần thiết.
Trên một trang, sử dụng biểu mẫu để hỏi người dùng họ, tên và tuổi. Hãy ghi những dữ liệu này vào phiên. Khi truy cập vào trang khác, hãy hiển thị những dữ liệu này lên màn hình.