php中关于cookie的操作有一个重要函数setcookie
函数原型如下:
bool setcookie ( string $name
[, string $value
[, int $expire
= 0 [, string $path
[, string$domain
[, bool $secure
= false [, bool $httponly
= false ]]]]]] )
对其中的参数进行解释:
$name $value 是cookie中对应的键值对
$expire cookie过期的时间戳 ,当时间超出过期时间戳对应的cookie文件就会被客户端的浏览器删除。默认是0,当用户关闭浏览器的时候cookie文件对应被删除
$path cookie能被读取的服务器端脚本路径,指明$path路径下的脚本文件能读取这个cookie文件中的数据
$domain 指定服务器域名,默认是当前url中的(或者http header中的)HOST ,注意 example.com 与 www.example.com 是不一样的,www.example.com、abc.example.com、csdn.example.com等是二级域名,example.com是一级域名(www.example.com 常常会被浏览器解析成 example.com这样的一级域名)
$secure 是否是安全传输 安全传输是https协议
$httponly ---
对于一个客户端的cookie文件,对应一个domain一个文件,文件里面的每个键拥有的数据分别是 值、过期时间、可访问路径
如下图:
一个cookie值中path domain不一样对应的cookie项也是不一样的,如下
setcookie('name','fantasy','/a/');
setcookie('name','fantasy','/b/');
以上设置的cookie是不一样的两个项,因为path不同,(同样在删除项的时候也是不一样的)
以上基础知识之后开始解释如何删除一个客户端的cookie文件
删除一个cookie的依据是cookie文件为空(借助的是客户端浏览器,浏览器会删除过期的cookie项以及空的cookie文件)
1、设置一个cookie文件,文件中有两个值
$expire=0;
$path='/test/cookie/a/';
setcookie('name','fantasy',$expire,$path);
setcookie('age',32,$expire,$path);
2、清空cookie文件
$path='/test/cookie/a/';
setcookie('name','',time()-1,$path);
setcookie('age',null,time()-1,$path);
清空了cookie,浏览器就会将对应的cookie文件从客户端删除
--------------------------------------------------------------------------------------
例子1、脚本只能访问对应path下的cookie值
设置cookie 指定path为 /test/cookie/a/
$expire=0;
$path='/test/cookie/a/';
setcookie('name','fantasy',$expire,$path);
setcookie('age',32,$expire,$path);
创建4个文件
1、/test/cookie/test.php
2、/test/cookie/a/test.php
3、/test/cookie/a/sub/test.php
4、/test/cookie/b/test.php
文件内容都是
print_r($_COOKIE);
显示结果:
文件2、3
Array ( [name] => fantasy [age] => 32 )
文件1、4
Array ( )
例子2、创建不同path的cookie值
setcookie('name','fantasy',0,'/test/cookie/a/');
setcookie('name','fantasy',0,'/test/cookie/b/');
看浏览器中的cookie文件:
不同path的cookie项是不同的尽管key val一样
所以在删除cookie文件的时候要把各个path下面的值全部置空来清空cookie文件,从而删除cookie文件