Hướng dẫn how sessions work in php - cách các phiên hoạt động trong php

Trong tình huống chung:

  • ID phiên được gửi cho người dùng khi phiên của anh ấy được tạo.
  • Nó được lưu trữ trong cookie (được gọi, theo mặc định, PHPSESSID)
  • Cookie đó được trình duyệt gửi đến máy chủ với mỗi yêu cầu
  • Máy chủ (PHP) sử dụng cookie đó, chứa session_id, để biết tệp nào tương ứng với người dùng đó.

Dữ liệu trong các tệp phiên là nội dung của $_SESSION, được nối tiếp (nghĩa là được biểu thị dưới dạng chuỗi - với một hàm như nối tiếp); và không cần thiết khi tệp được tải bởi PHP, để điền vào mảng $_SESSION.


Đôi khi, ID phiên không được lưu trữ trong cookie, nhưng cũng được gửi trong URL - nhưng điều đó khá hiếm, ngày nay.


Để biết thêm thông tin, bạn có thể xem phần xử lý phiên của hướng dẫn sử dụng, cung cấp một số thông tin hữu ích.

Chẳng hạn, có một trang về việc chuyển ID phiên, giải thích cách ID phiên được truyền từ trang này sang trang khác, sử dụng cookie hoặc trong URL - và các tùy chọn cấu hình nào ảnh hưởng đến điều này.


Sửa đổi một biến phiên PHP

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


Phá hủy một phiên PHP

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

Các biến phiên giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng sẽ được sử dụng trên nhiều trang (ví dụ: tên người dùng, màu yêu thích, v.v.). Theo mặc định, các biến phiên kéo dài cho đến khi người dùng đóng trình duyệt.

Vì thế; Các biến phiên chứa thông tin về một người dùng duy nhất và có sẵn cho tất cả các trang trong một ứng dụng.

Mẹo: Nếu bạn cần lưu trữ vĩnh viễn, bạn có thể muốn lưu trữ dữ liệu trong cơ sở dữ liệu. If you need a permanent storage, you may want to store the data in a database.


Bắt đầu một phiên PHP

Một phiên được bắt đầu với chức năng session_start().

Các biến phiên được đặt với biến toàn cầu PHP: $ _Session.

Bây giờ, hãy tạo một trang mới có tên là "demo_session1.php". Trong trang này, chúng tôi bắt đầu một phiên PHP mới và đặt một số biến phiên:

Thí dụ

// Start the session
session_start();
?>


// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>


Chạy ví dụ »

Lưu ý: Hàm session_start() phải là điều đầu tiên trong tài liệu của bạn. Trước bất kỳ thẻ HTML. The session_start() function must be the very first thing in your document. Before any HTML tags.



Nhận các giá trị biến phiên PHP

Tiếp theo, chúng tôi tạo một trang khác có tên là "demo_session2.php". Từ trang này, chúng tôi sẽ truy cập thông tin phiên chúng tôi đặt trên trang đầu tiên ("demo_session1.php").

Lưu ý rằng các biến phiên không được truyền riêng cho mỗi trang mới, thay vào đó chúng được lấy từ phiên chúng tôi mở ở đầu mỗi trang (session_start()).

Cũng lưu ý rằng tất cả các giá trị biến phiên được lưu trữ trong biến $ _Session toàn cầu:

Thí dụ

session_start();
?>


// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".
";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>


Chạy ví dụ »

Chạy ví dụ »

Thí dụ

session_start();
?>


print_r($_SESSION);
?>


Chạy ví dụ »

Chạy ví dụ »

Một cách khác để hiển thị tất cả các giá trị biến phiên cho phiên người dùng là chạy mã sau:


Làm thế nào nó hoạt động? Làm thế nào để nó biết nó là tôi?

Hầu hết các phiên đặt khóa người dùng trên máy tính của người dùng trông giống như thế này: 765487CF34ERT8DEDE5A562E4F3A7E12. Sau đó, khi một phiên được mở trên một trang khác, nó sẽ quét máy tính cho một khóa người dùng. Nếu có một trận đấu, nó sẽ truy cập phiên đó, nếu không, nó sẽ bắt đầu một phiên mới.

Thí dụ

session_start();
?>


// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>


Chạy ví dụ »


Chạy ví dụ »

Một cách khác để hiển thị tất cả các giá trị biến phiên cho phiên người dùng là chạy mã sau:

Thí dụ

session_start();
?>


// remove all session variables
session_unset();

Chạy ví dụ »
session_destroy();
?>


Chạy ví dụ »


Chạy ví dụ »



Phiên hoạt động như thế nào?

Phiên hơi khác nhau. Mỗi người dùng nhận được ID phiên, được gửi lại cho máy chủ để xác thực bằng cookie hoặc bằng cách nhận biến. Các phiên thường tồn tại trong thời gian ngắn, điều này làm cho chúng lý tưởng trong việc tiết kiệm trạng thái tạm thời giữa các ứng dụng. Phiên cũng hết hạn khi người dùng đóng trình duyệt.Each user gets a session ID, which is sent back to the server for validation either by cookie or by GET variable. Sessions are usually short-lived, which makes them ideal in saving temporary state between applications. Sessions also expire once the user closes the browser.

Làm thế nào để các biến phiên hoạt động?

Các biến phiên là các biến đặc biệt chỉ tồn tại trong khi phiên của người dùng với ứng dụng của bạn đang hoạt động.Các biến phiên là cụ thể cho mỗi khách truy cập vào trang web của bạn.Chúng được sử dụng để lưu trữ thông tin dành riêng cho người dùng cần được truy cập bởi nhiều trang trong một ứng dụng web.special variables that exist only while the user's session with your application is active. Session variables are specific to each visitor to your site. They are used to store user-specific information that needs to be accessed by multiple pages in a web application.
ID phiên được gửi cho người dùng khi phiên của anh ấy được tạo.Nó được lưu trữ trong cookie (được gọi, theo mặc định, PHPSessID) rằng cookie được trình duyệt gửi đến máy chủ với mỗi yêu cầu.Máy chủ (PHP) sử dụng cookie đó, chứa session_id, để biết tệp nào tương ứng với người dùng đó.

Chúng ta có thể bắt đầu 2 phiên trong PHP không?

Câu trả lời là không".Bạn không thể bắt đầu nhiều phiên đồng thời.Và nếu bạn làm như vậy, bạn sẽ gặp một lỗi như "một phiên đã được bắt đầu".Bạn không cần bắt đầu các phiên đồng thời, vì vậy bạn có thể tạo nhiều khóa.You cannot start multiple sessions simultaneously. And if you do, you'll get an error like "A session had already been started". You don't need to start simultaneous sessions, so long you can create multiple keys.