What to do if php session doesn't work
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.
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['arr'] = array('name' => 'molaifeng', 'hobby' => 'php'); ?> <a href="testSession.php?<?php echo session_name(); ?>=<?php echo session_id()?>">testSession</a>
<?php session_start($_REQUEST[session_name()]); print_r($_SESSION);
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

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

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

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

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,

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

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

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