I made a unified error prompt function. In the function execution, the error address writing is processed first. The cookie is used to facilitate users to jump directly to the page to be executed after logging in. However, when testing on the server, an error that did not occur locally was prompted: Warning: Cannot modify header information - headers already sent by....
Such a statement, it is obvious that the reason for this is setcookie. After checking the Internet, there is the following explanation: There are some restrictions on the use of cookies themselves, such as:
1. The description of calling setcookie must be placed before the tag
2. Echo cannot be used before calling setcookie
3. The cookie will not appear in the program until the web page is reloaded
4. The setcookie function must be used before any data output Before reaching the browser, send
5.......
Based on the above restrictions, when executing the setcookie() function, you will often encounter "Undefined index", "Cannot modify header information - headers already sent by" ...and other problems, the way to solve the error "Cannot modify header information - headers already sent by" is to delay the data output to the browser before generating the cookie. Therefore, you can add ob_start() at the front of the program; this function. This will solve it. If you want to add ob_start(), it is not feasible. It seems a bit depressing to change this after the program has been written. When I found out that this error was prompted, I was wondering why my local computer did not prompt this problem. I thought it was The PHP.ini configuration is different, but I think it’s wrong. They are almost the same...
So look at the sentence "output started at...." that follows, which means that there is output in another place before setcookie , so I found the file following output started at, and saw that the first line was blank, and then Solved!
Solution two:
Most of the methods to solve this problem online are the same, but I encountered it again today Such a question. After trying it, I found that it works:
Find the php.ini configuration file, then search for an item: output_buffering, change its value from off to on, and restart Apache and it will be ok.
PS: Sometimes, when you create a php application in SAE, if your jump and setcookie are not supported, this will also happen. SAE development document specifications need to be followed.