设置 Cookie
- setcookie: 发送 Cookie
setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool
参数说明:
-
$name: Cookie的名称
-
$value: Cookie 值。 这个值储存于用户的电脑里,请勿储存敏感信息
-
$expire: Cookie 的过期时间, 秒数, 如果设置成零,或者忽略参数, Cookie 会在会话结束时过期(也就是关掉浏览器时)
-
$path: Cookie 有效的服务器路径, 设置成 '/' 时,Cookie 对整个域名 $domain 有效, 默认值是设置 Cookie 时的当前目录
-
$domain: Cookie 的有效域名/子域名。 设置成子域名(例如 'www.example.com'),会使 Cookie 对这个子域名和它的三级域名有效(例如 w2.www.example.com)。 要让 Cookie 对整个域名有效(包括它的全部子域名),只要设置成域名就可以了(这个例子里是 'example.com')
-
$secure: 设置这个 Cookie 是否仅仅通过安全的 HTTPS 连接传给客户端, 默认是 false
-
$httponly: 设置成 TRUE,Cookie 仅可通过 HTTP 协议访问。 这意思就是 Cookie 无法通过类似 JavaScript 这样的脚本语言访问。
<?php
header('content-type: text/html;charset=utf-8');
// 设置 名为 tel 的 cookie, 10秒钟后过期
setcookie('tel','13510748888',time()+10);
// 设置cookie: username, 一小时后过期
setcookie('username','guoyou.国有',time()+3600);
?>
setcookie
十秒后,tel过期
没有设置时区, 所以时间显示和本地有差异
注意:在发送 Cookie 时,值的部分会被自动 urlencode 编码。收到 Cookie 时,会自动解码,并赋值到可变的 Cookie 名称上。 如果不想被编码,可以使 setrawcookie() 代替
- setrawcookie: 发送未经 URL 编码的 cookie
setrawcookie() 和 setcookie() 非常相似,唯一不同之处是发送到浏览器的 cookie 值没有自动经过 URL 编码(urlencode)。
<?php
header('content-type: text/html;charset=utf-8');
// 设置cookie: username, 一小时后过期
setrawcookie('username','guoyou.国有',time()+3600);
?>
没有自动经过 URL 编码
获取 Cookie
$_COOKIE— HTTP Cookies
<?php
header('content-type: text/html;charset=utf-8');
// 设置 名为 tel 的 cookie, 1000秒钟后过期
setcookie('tel','13510748888',time()+1000);
// 设置cookie: username, 一小时后过期
setcookie('username','guoyou.国有',time()+3600);
// 获取 cookie
$username = $_COOKIE['username'];
echo $username; // => guoyou.国有
// 获取所有 cookie
$cookies = $_COOKIE;
print_r($cookies);
/*
Array
(
[tel] => 13510748888
[username] => guoyou.国有
)
*/
删除 Cookie
通过设置 cookie 的过期时间来删除 cookie
<?php
header('content-type: text/html;charset=utf-8');
// 删除cookie: username
setcookie('username','guoyou.国有',time()-10);
cookie的缺点
(1)cookie 可能被禁用;
(2)cookie 与浏览器相关,不能互相访问;
(3)cookie 可能被用户删除;
(4)cookie 安全性不够高;
(5)cookie 存储空间很小(只有4–10KB左右)
可以尝试使用 H5 中的 localStorage 来代替 cookie 的使用, 这里暂时不介绍
网友评论