php中cookie
1.cookie的多文件操作时
方法原型: bool setcookie(string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]])
基础的创建就不说了,说说自己遇到的坑。如果你发现你明明在摸个文件中设置了cookie值,但在另一个文件中去取的时候却不见了,那么大概就是这种情况了。
在setcookie()中有很多参数,大多数我们只写了name,value,expire(持续时间) ,然而在实际网站中我们的cookie常常要在多个页面抑或者说是多个目录中去使用,那么此时不去设置path,就有可能想去取cookie值的时候取不到。
比如根目录为‘/’,cookie的path所在目录为‘/a’(文件夹a),那么在目录‘./a’(文件夹a)中的中的文件(包括后代)就能读取它,而例如’/b/’(文件夹b)和‘/test.php’(文件test。php)中的文件就不能读取它
你在某个cookie的path在a目录中,那么
那么其他目录的文件中就不能取到它,而在子级中可以取到父级目录中的cookie。
(注意)
同样效果还有domain(作用域)等,可以自己去查看setcookie()函数的手册。
如果你想知道你的cookie的属性,你可以在有该cookie的页面,按下通过浏览器F12通过控制台来查看。通常cookie都在控制台的Application目录下的Cookie里面。看看它的path和domain是否和你想要的范围相同。
,
可以从上面看去即使是name相同的cookie,由于它的path不同,就会导致他们的是两个个体,所以你的有时当你发现你明明setcookie()改变了某个cookie的值,但为什么不更新呢,所者说在某些地方更新了,某些地方好像有没有?那就是这些后面的属性path和domain的影响(domain打码因为是新手测试网站,怕被黑啊),你改变的cookie不是你想改变的那一个cookie,它俩虽然同名,但却是不一样的。这样的错误比较简单,却也容易忽略,只要控制台一测即可。
tips:由于子目录会包含父目录的cookie,所以你可以找子父目录的文件来查看cookie,越往下越好。看看你有多少同名的cookie。