Home  >  Article  >  Backend Development  >  How to solve the problem of cross-page loss of php session

How to solve the problem of cross-page loss of php session

PHPz
PHPzOriginal
2020-09-25 15:43:442943browse

Solution for php session lost across pages: 1. Set "session.use_trans_sid=1" in "php.ini"; 2. Manually pass the value through the URL or pass the session id through the hidden form; 3. Use Save "session_i" in the form of a file or database.

How to solve the problem of cross-page loss of php session

Recommended: "PHP Video Tutorial"

Introduction:

SESSION is lost in PHP ( Cannot be passed across pages) Solution

Generally speaking, the following points cause SESSION to be lost:

1. The client has disabled cookies

2. The browser cannot save Get cookie

3, session.use_trans_sid=0 in php.ini or compile without turning on the –enable-trans-sid option

Session is stored on the server side (by default, it is stored in a file) , get the user's file based on the session id provided by the client,

to get the value of the variable, the session id can use the client's Cookie or the Query_String

of the Http1.1 protocol (which is the accessed URL (the part after "?") is transmitted to the server, and then the server reads the Session directory... In other words,

session id is the ID card for obtaining the session variable stored on the service. When the code session_start(); is run,

A session file is generated on the server, and a session id uniquely corresponding to it is also generated.

Define the session variable to A certain form is stored in the session file just generated. Through the session id,

can retrieve the defined variables. After crossing the page, in order to use the session, you must execute session_start();

Another session file will be generated, corresponding to which the corresponding session id will be generated.

Using this session id is The variables in the first session file mentioned earlier cannot be retrieved,

because this session id is not the "key" to open it. If you add the code session_id ($session id); before session_start();

, no new session file will be generated,

The session file corresponding to this id will be read directly.

The session in PHP uses the client's cookie to save the session id by default.

So when there is a problem with the client's cookie, it will affect the session. It must be noted that:

session does not necessarily have to rely on cookies, which is also the brilliance of sessions compared to cookies.

When the client's cookies are disabled or there is a problem, PHP will automatically attach the session id to the URL.

In this way, the session variable can be used across pages through the session id. But this attachment also has certain conditions,

That is, "session.use_trans_sid = 1 in php.ini or the –enable-trans-sid option is turned on during compilation".

Understanding the above principles, now let’s put aside cookies and use sessions. There are three main ways:

1. Set session.use_trans_sid = 1 in php.ini or open it during compilation. With the –enable-trans-sid option,

let PHP automatically pass the session id across pages.

2. Manually pass the value through the URL and pass the session id through the hidden form.

3. Save session_id in a file, database, etc., and call it manually during the cross-page process.

The above is the detailed content of How to solve the problem of cross-page loss of php session. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn