Home Backend Development PHP Problem What to do if php session doesn't work

What to do if php session doesn't work

Sep 28, 2020 am 09:04 AM
php session

The solution for php session not working: first open the php configuration file; then find the session-related configuration items; then create a new session file and set permissions; and finally re-upload the file.

What to do if php session doesn't work

Recommended: "PHP Video Tutorial"

Methods to solve session failure in PHP projects

I took the shuttle bus after work today. When I was about to arrive at the station, the leader of my previous company sent me a QQ message, which meant putting out fires. After I got off the bus, I came back and asked in detail on the computer. The leader’s description is as follows

This address, please help me see why after uploading the test paper and publishing the task, the session is gone when setting up the answer sheet

Because the background of this project was all mine at the beginning. It was developed by one person, so the problem was found quickly. The process is: the user uploads the test paper through the js component. In the method of uploading the test paper, the session is used to store the detailed information of the just uploaded test paper, such as name, suffix, ID stored in the resource table, etc. After the upload is successful, click other options on the page. , such as school, grade, difficulty level, etc., and finally click submit. In the submission processing method, it is judged at the beginning whether the session value just uploaded exists. If it does not exist, it will jump to the home page of the test paper. I printed $_SESSION in this method, but it had no value. It was strange. It worked fine before. So I asked when it started, and the leader said that when he was about to get off work in the afternoon, the teacher called and said that uploading the test paper and setting the answer sheet failed, and it kept jumping. Then I asked again if the server environment had been changed, and the leader said no.

Since there is a problem, let’s solve it. I happened to be reading the book "PHP Core Technology and Best Practices" during this time, which has a detailed description of sessions and cookies, and it also deepened my understanding of the two. So I first opened the php configuration file, found the session-related configuration items, and found that session.save_path was /data2/session. I remember that it was set to /data1/session before. How did it change? So I exited and took a look at the path. At first I thought the directory had insufficient permissions, but later I saw that there was no such directory at all. No wonder each session does not span pages. So I created a new file, set permissions, uploaded it again, and everything returned to normal.

Writing this, I also want to talk about session-related technical points. Session is stored on the server side, and is stored in files by default (session.save_handler = files). So how is session generated? Session is generated through the session_start() function. When this function is run, a file and a unique session id corresponding to it are generated in the directory where the session is stored. The data of the session file can be retrieved through the session id. Since a new seession file will be generated every time session_start() is run, how to use the previously generated session file? Just session_id($session_id), then the session file will not be newly generated, but the session id corresponding to it will be read. session file. By default, session id uses the cookie on the client (browser) to save the session id (press F12 on the chrome browser, click Resources-cookies, you can see), use $_COOKIE['PHPSESSID'] Can be obtained. That PHPSESSID is the default name of the session id. It can be set by session.name in php.ini. Use session_name() in the script to get the name of the session id. Every time the browser talks to the server, the browser will pass the session id to the server, and the server will find the corresponding session file based on the passed session id, obtain the corresponding information, and perform related operations. Once the client (browser) disables cookies, the server will not receive the session id. At this time, the session id needs to be passed explicitly. Two methods: manually pass the session id through the URL; pass the session id through the hidden form. The above two methods require that the session.use_trans_sid value in the server's PHP environment is 1.

After so much verbosity, in the end it was Linus’s words, “talk is cheap, show me the code”.

<?php
session_start();
$_SESSION[&#39;arr&#39;] = array(&#39;name&#39; => &#39;molaifeng&#39;, &#39;hobby&#39; => &#39;php&#39;);
?>
<a href="testSession.php?<?php echo session_name(); ?>=<?php echo session_id()?>">testSession</a>
Copy after login
<?php
 
session_start($_REQUEST[session_name()]);
print_r($_SESSION);
Copy after login

You can understand the code, so I won’t explain it.

Finally, to summarize, cross-page session failures generally occur due to the points listed above. 1. The session.save_path is incorrect, such as insufficient permissions, or the directory does not exist; 2. The session.use_trans_sid value in the server PHP configuration is 0; 3. Cookies are disabled on the client. But I think the frequency of the first situation should be quite high.

【updated 2018-05-21】

Going online on Friday night, I hit another trap. The framework uses CI and session writes to MySQL tables. At first, the symptoms were exactly the same as the symptoms described above, so I reset the seesion directory and gave the relevant read and write permissions, but nothing happened. Later, I discovered that the table was a memory table. I thought it exceeded the maximum value of the memory table, so I cleared the table, but the problem still persisted. Finally, after comparing the differences between the two versions, I found that two new fields were added when saving the session, so I used the elimination method, first annotated both, and then opened them one by one, and finally located the problem. It turns out that a newly added value is used to save all the values ​​​​of a type table. When testing at the beginning, there were only a few values. Later, when it went online, more than a hundred values ​​​​were added. At the same time, the field was only 3000 in size. It must have been bursting. So I first increased the size of the field and let it be verified online, and then changed the relevant logic so that not all values ​​in the table were written in.

The above is the detailed content of What to do if php session doesn't work. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles