post-image

TÌM HIỂU NHANH VỀ SESSION TRONG PHP

Tổng quan

Session là một cách để lưu trữ thông tin (trong các biến) được sử dụng trên nhiều trang.

Không giống như một cookie, thông tin được lưu trữ trên server, chứ không được lưu trữ trên máy tính người dùng.

Session là gì?

Session là một cách để lưu trữ thông tin được sử dụng trên nhiều trang (page) của một website. Khác với cookie, session chỉ được lưu trữ trên web server.

Session là gì?

Khi truy cập một website, user có thể chuyển request từ trang này sang trang khác. Ví dụ, user vào trang login để đăng nhập. Sau đó, user vào trang product để mua sản phẩm. Thông tin user login phải được lưu trữ lại để tránh việc user phải đăng nhập lại khi qua trang khác.

Session giúp giải quyết vấn đề này bằng cách lưu trữ thông tin user để sử dụng trên nhiều trang như username, product_id,… Mặc định, các session sẽ tồn tại cho đến khi user đóng trình duyệt.

Trong PHP, các session được tạo và lưu trữ trong một folder tạm. Folder này được thiết lập trong file php.ini (mở file php.ini) với cấu hình session.save_path. Mặc định, session.save_path="C:\xampp\tmp".

Quy trình hoạt động của một session trong PHP

Khi một session trong PHP bắt đầu, những điều sau đây sẽ xảy ra:

  • Đầu tiên, php sẽ tạo một mã định danh duy nhất cho một phiên cụ thể, đó là một chuỗi ngẫu nhiên gồm 32 số thập lục phân như 3c7foj34c3jj973hjkop2fc937e3443.
  • Cookie có tên là PHP SESSID sẽ được tự động gửi đến máy tính của người dùng để lưu trữ chuỗi nhận dạng phiên duy nhất.
  • Tệp được tạo tự động trên máy chủ trong thư mục tạm thời được chỉ định và mang tên của số nhận dạng duy nhất có tiền tố là sess_ ie sess_3c7foj34c3jj973hjkop2fc937e3443.

Khi một tập lệnh PHP muốn truy xuất giá trị từ một biến session, PHP sẽ tự động lấy chuỗi định danh session duy nhất từ cookie PHP SESSID và sau đó tìm tệp mang tên đó trong thư mục tạm thời của nó và việc xác thực có thể được thực hiện bằng cách so sánh cả hai giá trị.

Session sẽ kết thúc khi người dùng tắt trình duyệt hoặc rời khỏi trang, máy chủ sẽ kết thúc session sau một khoảng thời gian định trước, thường là sau 30’.

Bắt đầu một session trong PHP

Hàm session_start() được sử dụng để bắt đầu một session.

Biến session được đặt bằng biến toàn cục PHP: $_SESSION.

Bây giờ, hãy tạo một trang mới. Trong trang này, chúng tôi bắt đầu một PHP session mới và thiết lập một số biến session:

<?php

session_start();
?>
<!DOCTYPE html>
<html>
<body>
 
<?php
$_SESSION["user_id"] = "user";
$_SESSION["username"] = "dantri";
echo "Các biến session đã được tạo.";
?>
 
</body>
</html>Code language: HTML, XML (xml)

Output:

Các biến session đã được tạo.

Thay đổi giá trị biến session trong PHP

Để thay đổi biến session, chỉ ghi đè lên biến đó:

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
 
<?php
$_SESSION["username"] = "dantri.vn";
print_r($_SESSION);
?>
 
</body>
</html>Code language: HTML, XML (xml)

Output:

Array ( [user_id] => TT123456 [username] => dantri.vn )
Code language: PHP (php)

Xóa biến session trong PHP

Để xóa tất cả các biến session toàn cầu hãy sử dụng session_unset() và session_destroy():

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
 
<?php
session_unset(); 
session_destroy(); 
print_r($_SESSION);
?>
 
</body>
</html>Code language: HTML, XML (xml)

Output:

Array ( )
Code language: JavaScript (javascript)

Hủy session trong PHP

Một session trong PHP có thể được hủy bằng cách sử dụng hàm session_destroy(). Hàm này không cần bất kỳ thám số nào và một lệnh gọi có thể hủy tất cả các biến session. 

Dưới đây là ví dụ hủy đặt biến duy nhất:

<?php

   unset($_SESSION['counter']);

?>Code language: HTML, XML (xml)

Dưới đây là lệnh hủy tất cả các biến session

<?php

   session_destroy();

?>Code language: HTML, XML (xml)

Chúng ta vừa tìm hiểu cách sử dụng session trong PHP. Các bạn cần nắm vững các kiến thức này vì chúng sẽ được sử dụng rất nhiều trong lập trình web.

Trả lời

Email của bạn sẽ không được hiển thị công khai.