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 suốt quá trình làm việc của họ. Không giống như Cookie, thông tin của session chỉ tạm thời và thông tin nà sẽ bị xoá sau khi người dùng rời khỏi ứng dụng web. Vì vậy, nếu cần phải lưu trữ thông tin trong cơ sở dữ liệu.
PHP Nguyễn Thị Trúc Linh 2016-03-04 09:06:08

Giới thiệu

Đối với các lập trình viên đam mê với lập trình web và bước đầu tiếp cận với PHP, chắc hẳn sẽ được nghe nói nhiều về session. Với mong muốn chia sẻ kiến thức, qua bài viết này tôi muốn chia sẻ về chức năng, cách cài đặt và sử dụng session.

Tiền đề bài viết

Bài viết nằm trong loạt bài viết tự học PHP của STDIO.

Đối tượng hướng đến

Bài viết này tôi muốn hướng tới các bạn đọc mới bắt đầu đầu tìm hiểu ngôn ngữ 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, thông tin của session chỉ tạm thời và session chỉ thực sự kết thúc khi người dùng mất trình duyệt hoặc máy chủ sẽ chấm dứt. Vì vậy, đôi lúc bạn 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 PHP ta 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>

Bạn 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 bạ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.

Tổng kết

Qua bài viết này, tôi đã giới thiệu một cách khái quát về khái niệm, chức năng cũng như cách sử dụng session. Từ đó bạn có thể áp dụng cụ thể ứng dụng lớn trong thực tế.

Mọi thắc mắc có thể bình luận tại bài viết hoặc liên hệ với Nguyễn Thị Trúc Linh.