如何创建 Cookie?
setcookie() 函数用于设置 cookie。
注释:setcookie() 函数必须位于 标签之前。
语法:
setcookie(name, value, expire, path, domain);
name:cookie的名称
value:cookie的值
expire:cookie的过期时间
path:cookie所存在的目录,此值可省略,可果省略则默认为当前页面,其它页面无法读取cookie
domain:表示的是cookie所在的域,默认为请求的地址
在下面的例子中,我们将创建名为 “user” 的 cookie,不设置过期时间。
<?php
setcookie("user", "zhangsan");
?>
如果设置cookie的时候没有时间,存储方式为内存是cookie.
内存式Cookie存储在内存中,浏览器关闭后就会消失,由于其存储时间较短,因此也被称为非持久Cookie或会话Cookie。,关闭浏览器cookie自动删除。
在下面的例子中,我们将创建名为 “user” 的 cookie,我们也规定了此 cookie 在一小时后过期:
<?php
setcookie('user','zhangsan',time()+3600); //将时间设置过期时间1小时
?>
注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)
如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
在下面的实例中,我们取回了名为 “user” 的 cookie 的值,并把它显示在了页面上:
<?php
// 输出 cookie 值
echo $_COOKIE["user"];
// 查看所有 cookie
print_r($_COOKIE);
?>
注释:如果第一次设置了cookie,马上取值是取不到的。因为客户端请求服务器以后,服务器的setcookie只是在响应头设置了set_cookie,包括浏览器第一次请求服务器也是没有cookie的,只有到服务器正确响应以后,客户端接收到数据以后将cookie保存起来等待下次请求直接会在请求头带上cookie,这时候服务器才会接受cookie并通过全局变量$_COOKIE来访问。
如何删除 Cookie?
当删除 cookie 时,您应当使过期日期变更为过去的时间点。
<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>
Cookie的路径
domain表示的是cookie所在的域,默认为请求的地址,如网址为www.test.com/test/test.aspx,那么domain默认为www.test.com。而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.test.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该cookie的domain设置为t2.test.com。
path表示cookie所在的目录,默认为/,就是根目录。在同一个服务器上有目录如下:/test/,/test/cd/,/test/dd/,现设一个cookie1的path为/test/,cookie2的path为/test/cd/,那么test下的所有页面都可以访问到cookie1,而/test/和/test/dd/的子页面不能访问cookie2。这是因为cookie能让其path路径下的页面访问。
浏览器会将domain和path都相同的cookie保存在一个文件里,cookie间用*隔开。