Sessions

Session

Session là thông tin mà PHP lưu lại trong mỗi phiên làm việc. Để làm được việc này PHP sẽ tạo ra một session cookie là một mã duy nhất để lưu xuống trình duyệt. Còn trên server sẽ lưu lại các giá trị của biến $_SESSION tùy theo mã session cookie gửi lên vào một file. Mỗi lần trình duyệt chạy sẽ gửi lên session cookie, tùy theo session cookie mà PHP sẽ lấy nội dung $_SESSION tương ứng.

Để bắt đầu khởi tạo session thì chúng ta sẽ dùng hàm session_start, hàm này phải đặt ở đầu file trước các các tag của html. Session name mặc định của PHP, cũng chính là tên của session cookie chính là PHPSESSID.

Ví dụ sau sẽ hiện lên một popup có dạng PHPSESSID=abcdef. Trong đó abcdef là id mà PHP tự sinh ra.

1
2
3
4
5
6
7
8
9
<?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
<body>
  <script>
    alert(decodeURI(document.cookie));
  </script>
</body>
</html>

$_SESSION

Chúng ta có thể đọc và ghi nội dung biến $_SESSION đối với mỗi session.

Ví dụ sau có hai file index.phptest.php. Sau khi truy cập url index.php, session đã được lưu lại, truy cập đường dẫn url test.php sẽ hiện lên thông tin nội dung của session.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php
// index.php
session_start();
if (!isset($_SESSION['myname'])) {
  $_SESSION['myname'] = 'Bill Gate';
}
?>
<!DOCTYPE html>
<html lang="en">
<body>
  Session is set.
  <a href="./test.php">Show my name</a>
</body>
</html>

File test.php:

1
2
3
4
5
6
7
8
<?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
<body>
  My name is <?php echo isset($_SESSION['myname']) ?
    $_SESSION['myname'] : 'unset' ; ?>.
</body>
</html>

Thử chạy file test.php ở một trình duyệt khác (mà không chạy file index.php) thì sẽ hiển thị ra nội dung My name is unset.