美文网首页
PHP中的Cookie -- PHP 学习 (十五)

PHP中的Cookie -- PHP 学习 (十五)

作者: 无故下架内容so账号已弃用 | 来源:发表于2019-05-08 13:21 被阅读0次

设置 Cookie

  • setcookie: 发送 Cookie

setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool

参数说明:

  1. $name: Cookie的名称

  2. $value: Cookie 值。 这个值储存于用户的电脑里,请勿储存敏感信息

  3. $expire: Cookie 的过期时间, 秒数, 如果设置成零,或者忽略参数, Cookie 会在会话结束时过期(也就是关掉浏览器时)

  4. $path: Cookie 有效的服务器路径, 设置成 '/' 时,Cookie 对整个域名 $domain 有效, 默认值是设置 Cookie 时的当前目录

  5. $domain: Cookie 的有效域名/子域名。 设置成子域名(例如 'www.example.com'),会使 Cookie 对这个子域名和它的三级域名有效(例如 w2.www.example.com)。 要让 Cookie 对整个域名有效(包括它的全部子域名),只要设置成域名就可以了(这个例子里是 'example.com'

  6. $secure: 设置这个 Cookie 是否仅仅通过安全的 HTTPS 连接传给客户端, 默认是 false

  7. $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 的使用, 这里暂时不介绍

相关文章

网友评论

      本文标题:PHP中的Cookie -- PHP 学习 (十五)

      本文链接:https://www.haomeiwen.com/subject/ultyoqtx.html