Hướng dẫn how does php know the session? - làm thế nào để php biết phiên?


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

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


Phiên PHP là gì?

Khi bạn làm việc với một ứng dụng, bạn mở nó, thực hiện một số thay đổi và sau đó bạn đóng nó. Điều này giống như một phiên. Máy tính biết bạn là ai. Nó biết khi bạn bắt đầu ứng dụng và khi bạn kết thúc. Nhưng trên internet có một vấn đề: Máy chủ web 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.

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ụ »

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.

Thí dụ

session_start();
?>


print_r($_SESSION);
?>


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.

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()).

Thí dụ

session_start();
?>


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


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.

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

Thí dụ

session_start();
?>


// remove all session variables
session_unset();

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


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.



0

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi hiểu rằng các biến phiên được lưu trữ trong PHP. Nhưng, nếu tôi đóng trình duyệt của mình, thì hãy quay lại trang, làm thế nào để PHP biết rằng phiên được thiết lập trước đó thuộc về trình duyệt của tôi? Địa chỉ IP?
But, if I close my browser, then go back to the page, how does PHP know that previously set session belongs with my browser?
Ip address?

Nếu nó sử dụng IP, ai đó không thể chỉ giả địa chỉ IP và đăng nhập vào các tài khoản người dùng khác vì đó là cách PHP liên kết phiên với trình duyệt?

Đã hỏi ngày 7 tháng 2 năm 2017 lúc 20:07Feb 7, 2017 at 20:07

3

Từ các tài liệu (nhấn mạnh của tôi):

Phiên là một cách đơn giản để lưu trữ dữ liệu cho người dùng cá nhân so với ID phiên duy nhất. Điều này có thể được sử dụng để tồn tại thông tin trạng thái giữa các yêu cầu trang. ID phiên thường được gửi đến trình duyệt qua cookie phiên và ID được sử dụng để truy xuất dữ liệu phiên hiện có. Việc không có ID hoặc cookie phiên cho phép PHP biết để tạo phiên mới và tạo ID phiên mới.sent to the browser via session cookies and the ID is used to retrieve existing session data. The absence of an ID or session cookie lets PHP know to create a new session, and generate a new session ID.

Khi một phiên mới được bắt đầu, PHP sẽ tạo ra một chuỗi ngẫu nhiên. ID này sau đó được gửi lại cho trình duyệt dưới dạng giá trị cookie. Các yêu cầu tiếp theo chuyển cookie này trở lại máy chủ để có thể tra cứu và biết đó là cùng một người dùng quay lại. ID phiên ngẫu nhiên khiến người khác khó đoán và có quyền truy cập vào phiên của người khác.

Trong phiên bản gần đây nhất của PHP, bạn có thể đặt độ dài của ID phiên nếu bạn lo lắng, thật dễ đoán. Nhưng theo thống kê các mặc định cho việc tạo ID phiên không phải là mối quan tâm của hầu hết các trang web.

Cấu hình session.name xác định tên cookie trong trình duyệt. Theo mặc định, đó là PHPSESSID.

Đã trả lời ngày 7 tháng 2 năm 2017 lúc 20:11Feb 7, 2017 at 20:11

Hướng dẫn how does php know the session? - làm thế nào để php biết phiên?

Matt Smatt sMatt S

Phù bằng vàng 14,6K454 Huy hiệu bạc75 Huy hiệu đồng4 gold badges54 silver badges75 bronze badges

4

Làm thế nào để PHP theo dõi các phiên?

Các chức năng phiên theo dõi người dùng bằng cách phát hành cookie với ID phiên được tạo ngẫu nhiên. Nếu PHP phát hiện người dùng không chấp nhận cookie ID phiên, thì nó sẽ tự động thêm ID phiên vào URL và biểu mẫu.by issuing them cookies with a randomly generated session IDs. If PHP detects that a user doesn't accept the session ID cookie, it automatically adds the session ID to URLs and forms.

Làm thế nào để PHP quản lý phiên?

Sửa đổi hoặc xóa một phiên để thay đổi biến phiên, bạn chỉ cần đặt lại cho một thứ khác bằng cách nhập ngay trên nó.Bạn có thể sử dụng unset () để xóa một biến duy nhất hoặc sử dụng session_unset () để xóa tất cả các biến cho một phiên.Bạn cũng có thể sử dụng session_destroy () để phá hủy phiên hoàn toàn.To change a session variable, you just reset it to something else by typing right over it. You can use unset() to remove a single variable or use session_unset() to remove all variables for a session. You can also use session_destroy() to destroy the session completely.

PHP có thể theo dõi các phiên người dùng không?

PHP cho phép chúng tôi theo dõi từng khách truy cập thông qua ID phiên duy nhất có thể được sử dụng để tương quan dữ liệu giữa các kết nối.ID này là một chuỗi ngẫu nhiên được gửi đến người dùng khi một phiên được tạo và được lưu trữ trong trình duyệt của người dùng trong cookie (theo mặc định có tên là PHPSessID). which can be used to correlate data between connections. This id is a random string sent to the user when a session is created and is stored within the user's browser in a cookie (by default called PHPSESSID).

Làm thế nào để sử dụng dữ liệu phiên Php Store?

Theo mặc định, dữ liệu phiên được lưu trữ trong thư mục của máy chủ /TMP trong các tệp được đặt tên là sess_ theo sau là chuỗi chữ và số duy nhất (định danh phiên).in the server's /tmp directory in files that are named sess_ followed by a unique alphanumeric string (the session identifier).