PHP: SESSION trong PHP

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

SESSION 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 và sau đó bạn đóng nó. Đ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 bắt đầu ứ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.

Các biến session giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng để sử dụng trên nhiều trang (ví dụ: tên người dùng, màu yêu thích, v.v.). Theo mặc định, các biến session kéo dài cho đến khi người dùng đóng trình duyệt.

Vì thế, các biến session giữ thông tin về một người dùng duy nhất 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ộ nhớ lâu dài, 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 với hàm session_start().

Các biến session được thiết lập 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 ta bắt đầu một phiên PHP mới và đặt một số biến session:

<?php
// Bắt đầu phiên
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Thiết lập các biến session
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Các biến session đã được thiết lập.";
?>

</body>
</html>

Lưu ý: Hàm session_start() phải nằm ở dòng đầu tiên trong tài liệu của bạn và nằm trước bất kỳ thẻ HTML nào.

 

Nhận giá trị biến session PHP

Tiếp theo, chúng ta tạo một trang khác có tên "demo_session2.php". Từ trang này, chúng ta sẽ truy cập thông tin session mà chúng ta đã thiết lập ở trang đầu tiên ("demo_session1.php").

Lưu ý rằng các biến session 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 mà chúng ta mở ở đầu mỗi trang ( session_start()).

Cũng lưu ý rằng tất cả các giá trị của biến session được lưu trữ trong biến mảng global $ _SESSION:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// In ra các biến session đã được thiết lập ở trang trước:
echo "Màu yêu thích là " . $_SESSION["favcolor"] . ".<br>";
echo "Con vật yêu thích là " . $_SESSION["favanimal"] . ".";
?>

</body>
</html>

Một cách khác để hiển thị tất cả các giá trị biến session cho phiên người dùng là chạy đoạn mã sau:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>

Lưu ý cách thức hoạt động của phiên:

Hầu hết các phiên đặt khóa người dùng trên máy tính của người dùng trông giống như sau: 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 có một kết quả phù hợp, nó sẽ truy cập vào phiên đó, nếu không, nó sẽ bắt đầu một phiên mới.

Sửa đổi một biến session PHP

Để thay đổi một biến session, chỉ cần ghi đè lên đó:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// để thay đổi giá trị biến session, đơn giản là gán cho nó một giá trị khác
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>

</body>
</html>

Hủy một phiên PHP

Để xóa tất cả các biến session global và hủy phiên, hãy sử dụng session_unset() và session_destroy():

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Xóa tất cả các biến session
session_unset();

// Hủy phiên
session_destroy();

echo "Tất cả các biến session bây giờ đã bị xóa, và phiên cũng bị hủy."
?>

</body>
</html>
» Tiếp: Giới thiệu
« Trước: COOKIE trong PHP
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!