Categories PHP-MySQL

Session trong PHP

Session được dùng để lưu trữ thông tin trong biến và sử dụng nó từ trang này sang trang khác. Các biến thông thường trong PHP chỉ làm việc tại trang đó, sáng trang khác sẽ mất, session thì không bị như thế.

Không giống cookie, thông tin không được lưu trong máy tính của người dùng.


Session trong PHP là gì?

Khi bạn làm việc với một ứng dụng nào đó, bạn mở nó ra, thực hiện một số thay đổi và rồi bạn đóng nó lại. Điều đó gọi là session – hiểu theo tiếng Việt nghĩa là phiên làm việc.

Máy tính biết bạn là ai. Nó biết khi nào bạn bật ứng dụng và khi nào tắt. 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 cái gì, bởi địa chỉ HTTP không duy trì trạng thái.

Biến session giải quyết vấn đề này bằng cách lưu trữ thông tin user được dùng qua nhiều trang (ví du: username, màu sắc ưa thích, …). Theo mặc định, các biến session vẫn còn tồn tại cho đến khi người dùng đóng trình duyệt.

Vì vậy biến session nắm giữ thông tin về một user nhất định và được sử dụng trên tất cả các trang trong ứng dụng đó


Cách tạo Session trong PHP

Bạn khởi tạo một session bằng cách dùng hàm session_start()

Biến session được gắn với biến toàn cục là $_SESSION

Bây giờ bạn hãy tạo một trang mới có tên “vidu_session1.php”. Trong trang này, bạn tạo session PHP và khởi tạo một số biến session:

Ví dụ:

<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["doi_bong_yeu_thich"] = "Bác Xa";
$_SESSION["mon_the_thao_ua_thich"] = "Chạy bộ";
echo "Các biến session đã được tạo";
?>

</body>
</html>

Chú ý: hàm session_start() phải được viết đầu tiên trong trang, đứng TRƯỚC thẻ HTML


Lấy giá trị của biến session trong PHP

Tiếp theo chúng ta tạo trang thứ hai có tên “vidu_session2.php”. Từ trang này, chúng ta truy cập thông tin session được tạo từ trang trước đó (vidu_session1.php).

Chú ý là tất cả giá trị của biến session được lưu trữ trong biến toàn cục có tên $_SESSION:

Ví dụ:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Đưa ra màn hình các biến session được khởi tạo từ trang trước
echo "Đội bóng yêu thích là: " . $_SESSION["doi_bong_yeu_thich"] . ".<br>";
echo "Môn thể thao yêu thích là: " . $_SESSION["mon_the_thao_ua_thich"]. ".";

?>
</body>
</html>

Một cách khác để đưa ra tất cả các giá trị của biến session (tương ứng với một user nào đó) bằng đoạn code sau:

Ví dụ:

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

<?php
print_r($_SESSION);
?>

</body>
</html>

Nó làm việc thế nào? Làm sao để nó biết được tôi?

Hầu hết session tạo khóa user trên máy tính giống như sau: 16483986038fsdf4996qeroi58. Sau đó khi session được mở trên trang khác, nó sẽ quét thông tin của khóa này. Nếu phù hợp, nó sẽ cho phép truy cập session, nếu không nó sẽ khởi tạo session mới.


Thay đổi biến Session

Để thay đổi biến session, đơn giả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["doi_bong_yeu_thich"] = "Rê An";
print_r($_SESSION);
?>

</body>
</html>

Hủy bỏ Session

Để loại bỏ tất cả các biến session toàn cục và hủy session, chúng ta sử dụng hàm session_unset() và session_destroy():

Ví dụ:

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

<?php
// Loại bỏ tất cả các session
session_unset();

// Hủy các session
session_destroy();
?>

</body>
</html>
Back to Top