contract killer php cookie scope – do not use your cookie on the current page

WBOY
Release: 2016-07-29 08:39:43
Original
1029 people have browsed it

Because there was no problem at all in the local test, I ssh to the remote server (not the publishing server, it is recommended not to change things directly on the Publish Server), conducted a breakpoint test, and finally found that there is a relatively complex logic. The function calls login verification in the constructor. The verification did not pass, so I jumped away.
Let’s take a look at the use of php cookies through the program. Maybe you are still wondering after reading the above paragraph, what is the connection between this and cookies?
Let’s talk about the login verification used in our MVC structure in general:
The constructor in the controller has a function that specifically verifies login. This function is added according to whether the module requires login verification.
Bug program: After setcookie, the current page undergoes login verification.
Cause of bug: The current page cannot get the cookie just set on this page
Let’s test it with a program:
Here is a function to set cookies, we are using it now, I am lazy

Copy the code The code is as follows:


function dsetcookie($var, $value, $life = 0) {
global $_cookie_domain, $_cookie_path, $_timestamp, $_SERVER;
setcookie($var, escape($value), $life ? $_timestamp + $life : 0,
$_cookie_path, $_cookie_domain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0);
}


Then create test1.php with the following content:

Copy the code The code is as follows:


$td = date('d');
dsetcookie("testvar",$td,30*24*60*60);
print_r($_COOKIE) ;
?>


You will get an empty array array();
Then when can we use this $_COOKIE variable for the first time after setting it?
Now let’s slightly change the test1.php program:

Copy the code The code is as follows:


$td = date('d');
dsetcookie("testvar",$ td,30*24*60*60);
print_r($_COOKIE);//This needs to be commented out, otherwise a header warning will be reported
$location = "test2.php";
header("Location: ".$location ; ;

Here we will get:
Array
(

[testvar] =10 ) Here we can get and use this cookie value. Why? You can understand this: the currently set cookie does not take effect immediately, but will not be visible until the next page.

This is because the cookie is passed from the server to the client's browser on the page that is set, and will be viewed on the next page. The reason why the server can take out the cookie from the client's machine and send it back to the server.


Write here first:


You can learn more about COOKIE through the following links




PHP COOKIE and its use


Netscape’s official original definition of Cookie website:
http: //www.netscape.com/newsref/std/cookie_spec.html


The above introduces the scope of contract killer php cookie - do not use your cookie on the current page, including contract killer content. I hope it will be helpful to friends who are interested in PHP tutorials.

Related labels:
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!