SESSION Trong PHP — PHP

Session là gì?

Session trong PHP cho phép lưu trữ thông tin (tên người dùng, danh mục hàng hoá trong giỏ hàng…) trong suốt quá trình làm việc của họ. Không giống như cookie, dữ liệu của session là tạm thời và chỉ thực sự kết thúc khi người dùng tắt trình duyệt hoặc máy chủ chấm dứt kết nối. Vì vậy, đôi lúc cần phải lưu trữ thông tin về session trong cơ sở dữ liệu.

Session làm việc bằng cách:

  • Mỗi session sẽ được cấp một định danh (ID) khác nhau là chuỗi 32 kí tự.
  • Cookie gọi là PHPSESSID sẽ được tự động gửi đến máy tính người dùng để lưu trữ chuỗi.
  • Một tệp tin được tự động tạo ra và nội dung đươc lưu trong thư mục thiết lập trong file php.ini.

Thiết lập session

  • Một session được thiết lập trong PH sử dụng cú pháp: session_start().
  • Tất cả session được lưu trong biến toàn cục $_SESSION.

Lưu ý: hàm khởi động session phải đặt phía trên thẻ HTML.

<?php
    // Start the session
    session_start();
?>

<!DOCTYPE html>
<html>
<body>
    <?php
        $_SESSION["manager"] = "KevinLa";
    ?>
</body>
</html>

Có thể sử dụng phương thức isset() để kiểm tra xem session đã được thiết lập hay chưa.

<?php
    session_start();

    if(isset($_SESSION['views']) 
        $_SESSION['views'] = $_SESSION['views']+ 1;
    else 
        $_SESSION['views'] = 1;
?>

<!DOCTYPE html>
<html>
<body> 
    <?php 
        echo "views = ". $_SESSION['views'];
    ?>
</body>
</html>

Phân tích

Đoạn code ví dụ trên có tác dụng đếm và in ra màn hình số lần Reload current page (F5) trình duyệt.

  • Khi bạn chạy nó với lần đầu tiên. Phương thức isset() kiểm tra xem $_SESSION['views'] tồn tại (thiết lập) hay chưa. Lúc này nó chưa tồn tại nên được gán với giá trị 1.
  • Khi bạn Reload current page (F5) lại trình duyệt. Lúc này $_SESSION['views'] đã tồn tại. Liên tục hành động Reload current page (F5) thì biến $_SESSION['views'] sẽ tăng liên tục.

Huỷ bỏ session

Trong PHP, có nhiều cách để bạn có thể hủy bỏ một session. Tùy thuộc vào mục đích sử dụng mà bạn chọn một cách cho phù hợp. Hãy xem đoạn code ví dụ của tôi ở dưới đây.

<?php
    session_start();
?>

<!DOCTYPE html>
<html>
<body>
    <?php
        session_destroy();
        session_unset();
        unset($_SESSION["manager"]);
    ?>
</body>
</html>

Phân tích

  • Dòng 8: Hủy bỏ toàn bộ các biến trong session.
  • Dòng 9: Hủy bỏ các giá trị trong session.
  • Dòng 10: Hủy bỏ một session được chỉ định.