Session trong PHP - 10 phút tìm hiểu nhanh về session trong PHP
31/05/2021 02:01
Session trong PHP là một cách để lưu trữ thông tin (trong các biến) để sử dụng trên nhiều trang. Không giống như cookie, các thông tin này không được lưu trữ trên máy tính của người dùng. Cùng tìm hiểu về các session trong PHP và chức năng của nó trong bài viết dưới đây.
Khái niệm session trong PHP
Khi bạn làm việc với ứng dụng, bạn sẽ cần thực hiện các thay đổi và sau đó mới đóng lại ứng dụng. Đây sẽ gọi là một phiên hay session trong PHP. Session sẽ cho máy tính biết khi nào bạn bắt đầu ứng dụng và khi nào bạn kết thúc ứng dụng. Tuy vậy, khi hoạt động trên internet, máy chủ web sẽ không biết bạn là ai hoặc bạn làm gì vì địa chỉ http không duy trì trạng thái.
Khái niệm session trong PHP
Session trong PHP sẽ giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng sử dụng trên nhiều trang (ví dụ: tên người dùng, màu yêu thích,...) Theo mặc định các biến của session kéo dài cho đến khi người dùng đóng trình duyệt.
Vì vậy, có thể kết luận các session trong PHP chứa thông tin về người dùng và có sẵn cho tất cả các trang trong ứng dụng.
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’.
>>> Đọc thêm: PHP XML: Tạo, phân tích cú pháp ví dụ trong PHP XML
Bắt đầu một session trong PHP
Một session trong PHP có thể dễ dàng bắt đầu bằng cách gọi hàm session_start (), trước tiên hàm này kiểm tra xem một phiên đã được bắt đầu chưa và nếu chưa có phiên nào được bắt đầu thì nó sẽ bắt đầu một phiên. Bạn nên đặt lệnh gọi tới session_start () ở đầu trang.
Các biến phiên được lưu lữ trong các mảng liên kết được gọi là $_SESSION []. Những biến này có thể được truy cập trong thời gian của một session.
Ví dụ dưới đây bắt đầu một session, sau đó đăng ký một biến được gọi là bộ đếm (counter) được tăng lên mỗi khi trang được truy cập trong phiên.
Tận dụng hàm isset() để kiểm tra xem liệu biến session đã được set hay chưa. Đưa biến dưới đây vào file test.php và tải lại file nhiều lần cho tới khi nhận được kết quả như dưới đây:
<?php
session_start();
if( isset( $_SESSION['counter'] ) ) {
$_SESSION['counter'] += 1;
}else {
$_SESSION['counter'] = 1;
}
$msg = "You have visited this page ". $_SESSION['counter'];
$msg .= "in this session.";
?>
<html>
<head>
<title>Setting up a PHP session</title>
</head>
<body>
<?php echo ( $msg ); ?>
</body>
</html>
Kết quả nhận được như sau:
You have visited this page 1in this session.
>>> Đọc thêm: Toán tử bậc ba trong PHP - Tìm hiểu về toán tử bậc 3 trong PHP
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']);
?>
Dưới đây là lệnh hủy tất cả các biến session
<?php
session_destroy();
?>
Cách bật Auto Session trong PHP
Bạn không cần gọi hàm start_session () để bắt đầu một phiên khi người dùng truy cập trang web của bạn nếu bạn có thể đặt biến session.auto_start thành 1 trong tệp php.ini .
Session không sử dụng cookie
Có những trường hợp người dùng không cho phép lưu trữ cookie trên máy của họ. Vì vậy, có một phương pháp khác là gửi ID session đến phiên trình duyệt.
Ngoài ra, bạn có thể sử dụng hằng số SID được định nghĩa nếu phiên bắt đầu. Nếu người dùng không gửi một phiên cookie hợp lệ, nó sẽ có dạng session_name=session_id. Nếu không nó sẽ mở rộng một chuỗi đơn. Thêm vào đó, bạn có thể nhúng nó vào URL vô điều kiện.
Ví dụ sau minh họa cách đăng ký một biến và cách liên kết chính xác đến một trang khác bằng SID.
<?php
session_start();
if (isset($_SESSION['counter'])) {
$_SESSION['counter'] = 1;
}else {
$_SESSION['counter']++;
}
$msg = "You have visited this page ". $_SESSION['counter'];
$msg .= "in this session.";
echo ( $msg );
?>
<p>
To continue click following link <br />
<a href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>
Kết quả:
You have visited this page 1in this session.
To continue click following link
Kết luận: Trên đây là khái niệm và cách sử dụng session trong PHP. Bên cạnh các thành phần khác, Session trong PHP cũng là yếu tố mà lập trình viên cần để tâm trong quá trình làm việc với PHP. Tìm hiểu thêm về PHP và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H.