Solution to invalid session and cookie in thinkphp
The example in this article describes the solution to invalid session and cookie in thinkphp. Share it with everyone for your reference. The specific analysis is as follows:
Problem description:
There is no problem with session and cookie when debugging locally. I use session to save the information of the current login account. After uploading to the server, I found that the session no longer exists after the jump. Why? ? The output session on the current page exists.
I have encountered this problem for three days. Because I am self-study, there is no teacher to ask for advice, and there are not many people around me who are doing PHP, so it is really tragic, so Baidu, and Baidu Many people on the Internet are talking nonsense, and there is nothing that can solve the problem. After three days of modification, I finally found the root cause. It turns out that the majority of servers that support thinkphp are Linux systems, and our programming is basically Windows, so The problem of bom header will occur, and PHP cannot parse the bom header, but directly removes it, causing session and cookie to be unusable.
Solution:
What is bom header? In a UTF-8 encoded file, the BOM is in the header of the file, occupying three bytes, which is used to indicate that the file belongs to UTF-8 encoding. Now there are many software that recognize the BOM header, but there are still some that cannot recognize the BOM header, such as PHP. The BOM header cannot be recognized, which is why an error occurs after editing UTF-8 encoding with Notepad.
The simple ways to remove the BOM header are the following two:
1. The method of removing the BOM header with editplus
After the editor is adjusted to UTF8 encoding format, there will be a string of hidden characters (that is, BOM) in front of the saved file, which is used by the editor to identify whether the file is encoded in UTF8.
Run Editplus, click Tools, Select preferences, select the file, select UTF-8 identification to always delete the signature, and then edit and save the PHP file. The PHP file will not have a BOM.
2. How to remove the BOM header with ultraedit
After opening the file, Select the encoding format in the save as option (utf-8 without BOM header), confirm and it is ok. How about, it is very simple to remove the BOM header.
Let’s talk about the BOM information of utf8. BOM refers to the PHP file itself. The storage method is UTF-8 with BOM. The garbled Chinese characters on ordinary pages are generally not caused by this reason.
header("Content-type: text/html; charset=utf-8");
This sentence controls the encoding method of the html output page. The BOM can only be stored in "Notepad" under WINDOWS. It only exists in UTF-8. You can use WINHEX to delete the first 2 bytes.
In the encoding settings in Dreamweaver, you can set whether to include BOM. Generally, as long as the output of php is not a picture (GDI Stream), BOM will be included. It will not cause problems. If there are extra characters at the beginning of the GDI Stream, it will be displayed as a red cross.
I hope this article will be helpful to everyone’s PHP programming based on the ThinkPHP framework.
For more articles related to solutions to invalid session and cookies in thinkphp, please pay attention to 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

AI Hentai Generator
Generate AI Hentai for free.

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



The problem was found in the springboot project production session-out timeout. The problem is described below: In the test environment, the session-out was configured by changing the application.yaml. After setting different times to verify that the session-out configuration took effect, the expiration time was directly set to 8 hours for release. Arrived in production environment. However, I received feedback from customers at noon that the project expiration time was set to be short. If no operation is performed for half an hour, the session will expire and require repeated logins. Solve the problem of handling the development environment: the springboot project has built-in Tomcat, so the session-out configured in application.yaml in the project is effective. Production environment: Production environment release is

Session failure is usually caused by the session lifetime expiration or server shutdown. The solutions: 1. Extend the lifetime of the session; 2. Use persistent storage; 3. Use cookies; 4. Update the session asynchronously; 5. Use session management middleware.

Solution to the cross-domain problem of PHPSession In the development of front-end and back-end separation, cross-domain requests have become the norm. When dealing with cross-domain issues, we usually involve the use and management of sessions. However, due to browser origin policy restrictions, sessions cannot be shared by default across domains. In order to solve this problem, we need to use some techniques and methods to achieve cross-domain sharing of sessions. 1. The most common use of cookies to share sessions across domains

Solution to the problem that the php session disappears after refreshing: 1. Open the session through "session_start();"; 2. Write all public configurations in a php file; 3. The variable name cannot be the same as the array subscript; 4. In Just check the storage path of the session data in phpinfo and check whether the sessio in the file directory is saved successfully.

The default expiration time of session PHP is 1440 seconds, which is 24 minutes, which means that if the client does not refresh for more than 24 minutes, the current session will expire; if the user closes the browser, the session will end and the Session will no longer exist.

Problem: Today, we encountered a setting timeout problem in our project, and changes to SpringBoot2’s application.properties never took effect. Solution: The server.* properties are used to control the embedded container used by SpringBoot. SpringBoot will create an instance of the servlet container using one of the ServletWebServerFactory instances. These classes use server.* properties to configure the controlled servlet container (tomcat, jetty, etc.). When the application is deployed as a war file to a Tomcat instance, the server.* properties do not apply. They do not apply,

JavaScriptCookies Using JavaScript cookies is the most effective way to remember and track preferences, purchases, commissions and other information. Information needed for a better visitor experience or website statistics. PHPCookieCookies are text files that are stored on client computers and retained for tracking purposes. PHP transparently supports HTTP cookies. How do JavaScript cookies work? Your server sends some data to your visitor's browser in the form of a cookie. Browsers can accept cookies. If present, it will be stored on the visitor's hard drive as a plain text record. Now, when a visitor reaches another page on the site

1. Implementing SMS login based on session 1.1 SMS login flow chart 1.2 Implementing sending SMS verification code Front-end request description: Description of request method POST request path /user/code request parameter phone (phone number) return value No back-end interface implementation: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1. Verify mobile phone number if
