Phiên PHP

Biến session PHP được sử dụng để lưu trữ thông tin về phiên người dùng hoặc thay đổi thiết lập phiên người dùng. Thông tin lưu trữ trong biến session là duy nhất cho một người dùng và có thể được sử dụng trên tất cả các trang của ứng dụng.

Biến Session PHP

Khi bạn chạy một ứng dụng, bạn sẽ mở nó, thực hiện một số thay đổi, sau đó đóng nó. Điều này rất giống với một phiên. Máy tính biết bạn là ai. Nó biết bạn khi nào khởi động ứng dụng và khi nào kết thúc. Nhưng trên Internet, có một vấn đề: máy chủ không biết bạn là ai và bạn đang làm gì, điều này do địa chỉ HTTP không duy trì được trạng thái.

Bằng cách lưu trữ thông tin người dùng trên máy chủ để sử dụng sau này, PHP session giải quyết vấn đề này (ví dụ tên người dùng, sản phẩm mua hàng, v.v.). Tuy nhiên, thông tin phiên là tạm thời và sẽ bị xóa khi người dùng rời khỏi trang web. Nếu bạn cần lưu trữ thông tin vĩnh viễn, bạn có thể lưu dữ liệu trong cơ sở dữ liệu.

Cách thức hoạt động của Session là: tạo một ID duy nhất (UID) cho mỗi người truy cập và lưu trữ biến dựa trên UID này. UID được lưu trong cookie hoặc truyền qua URL.

Khởi động phiên PHP

Trước khi bạn lưu thông tin người dùng vào session PHP, bạn phải khởi động phiên.

Ghi chú:Hàm session_start() phải nằm trước thẻ <html>:

<?php session_start(); ?>
<html>
<body>
</body>
</html>

Mã trên sẽ đăng ký phiên của người dùng cho máy chủ, để bạn có thể bắt đầu lưu thông tin người dùng, đồng thời phân phối một UID cho phiên người dùng.

Lưu biến Session

Cách chính xác để lưu và lấy lại biến phiên session là sử dụng biến $_SESSION của PHP:

<?php
session_start();
//lưu dữ liệu phiên
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//lấy dữ liệu phiên
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>

Kết quả:

Pageviews=1

Trong ví dụ dưới đây, chúng tôi tạo ra một bộ đếm page-view đơn giản. Hàm isset() kiểm tra xem biến "views" có được đặt hay không. Nếu biến "views" đã được đặt, chúng tôi tăng số đếm. Nếu "views" không tồn tại, chúng tôi tạo biến "views" và đặt nó thành 1:

<?php
session_start();
if(isset($_SESSION['views']))
  $_SESSION['views']=$_SESSION['views']+1;
else
  $_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

Kết thúc Session

Nếu bạn muốn xóa một số dữ liệu session, bạn có thể sử dụng hàm unset() hoặc session_destroy().

Hàm unset() được sử dụng để giải phóng biến session được chỉ định:

<?php
unset($_SESSION['views']);
?>

Bạn cũng có thể hoàn toàn kết thúc session bằng hàm session_destroy():

<?php
session_destroy();
?>

Ghi chú:session_destroy() sẽ đặt lại session, bạn sẽ mất tất cả dữ liệu session đã lưu.