Phiên PHP
Phiên là một cách lưu trữ thông tin (theo biến) để sử dụng trên nhiều trang.
Không giống như cookie, thông tin không được lưu trữ trên máy tính của người dùng.
Phiên PHP là gì?
Khi bạn làm việc với một ứng dụng, bạn mở nó, thực hiện một số thay đổi rồi đóng nó lại. Điều này giống như một Phiên. Máy tính biết bạn là ai. Nó biết khi nào bạn khởi động ứng dụng và khi nào bạn kết thúc. Nhưng trên internet có một vấn đề: máy chủ web không biết bạn là ai hoặc bạn làm gì, vì địa chỉ HTTP không duy trì trạng thái.
Biến phiên giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng sẽ được sử dụng trên nhiều trang (ví dụ: tên người dùng, màu sắc yêu thích, v.v.). Theo mặc định, các biến phiên kéo dài cho đến khi người dùng đóng trình duyệt.
Vì thế; Các biến phiên chứa thông tin về một người dùng và có sẵn cho tất cả các trang trong một ứng dụng.
Mẹo: Nếu bạn cần một bộ lưu trữ vĩnh viễn, bạn có thể muốn lưu trữ dữ liệu trong cơ sở dữ liệu .
Bắt đầu một phiên PHP
Một phiên được bắt đầu bằng hàm session_start()
.
Các biến phiên được đặt bằng biến toàn cục PHP: $_SESSION.
Bây giờ, hãy tạo một trang mới có tên "demo_session1.php". Trong trang này, chúng tôi bắt đầu một phiên PHP mới và đặt một số biến phiên:
Ví dụ
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
Chạy ví dụ » Lưu ý: Hàm session_start()
phải là hàm đầu tiên trong tài liệu của bạn. Trước bất kỳ thẻ HTML nào.
Nhận các giá trị biến phiên PHP
Tiếp theo, chúng tôi tạo một trang khác có tên "demo_session2.php". Từ trang này, chúng tôi sẽ truy cập thông tin phiên mà chúng tôi đã đặt trên trang đầu tiên ("demo_session1.php").
Lưu ý rằng các biến phiên không được chuyển riêng lẻ đến từng trang mới, thay vào đó chúng được truy xuất từ phiên chúng tôi mở ở đầu mỗi trang ( session_start()
).
Cũng lưu ý rằng tất cả các giá trị biến phiên được lưu trữ trong biến $_SESSION toàn cục:
Ví dụ
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
Chạy ví dụ »Một cách khác để hiển thị tất cả các giá trị biến phiên cho phiên người dùng là chạy mã sau:
Ví dụ
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
Chạy ví dụ » Làm thế nào nó hoạt động? Làm sao nó biết đó là tôi?
Hầu hết các phiên đều đặt khóa người dùng trên máy tính của người dùng trông giống như thế này: 765487cf34ert8dede5a562e4f3a7e12. Sau đó, khi một phiên được mở trên một trang khác, nó sẽ quét máy tính để tìm khóa người dùng. Nếu trùng khớp thì nó sẽ truy cập vào phiên đó, nếu không thì nó sẽ bắt đầu một phiên mới.
Sửa đổi một biến phiên PHP
Để thay đổi biến phiên, chỉ cần ghi đè lên nó:
Ví dụ
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
Chạy ví dụ »Phá hủy một phiên PHP
Để xóa tất cả các biến phiên toàn cục và hủy phiên, hãy sử dụng session_unset()
và session_destroy()
:
Ví dụ
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>
Chạy ví dụ »