📜  PHP-Cookies(1)

📅  最后修改于: 2023-12-03 15:03:44.124000             🧑  作者: Mango

PHP-Cookies

什么是Cookies?

HTTP协议是无状态的,也就是说每次请求和响应之间是没有任何关联的,服务器无法知道两次请求是否来自同一个用户。这显然会带来很多问题,如果你想在你的网站中实现记住用户登录状态,让用户不用每次访问都要重新登录,你怎么实现呢?

这就引入了Cookies技术,Cookies是在客户端保存信息的一种技术,通过在客户端保存一些信息,服务器可以在客户端请求时获取这些信息,也就可以判断是否来自同一个用户。

这些信息是以键值对形式存在的,名称和值均可自定义,而且不同网站之间存储的Cookies不会相互干扰。

设置Cookies

在PHP中设置Cookies非常简单,只需要通过setcookie函数即可。

setcookie(name, value, expire, path, domain, secure, httponly);

其中,参数的含义如下:

  • name:必需,cookie的名字,用于之后读取取这个cookie。
  • value:必需,cookie的值。
  • expire:可选,指定在什么时间之后cookie失效,如不指定则在用户关闭浏览器时清除。
  • path:可选,指定cookie的有效路径。
  • domain:可选,指定cookie的有效域名。
  • secure:可选,如果为TRUE,则仅通过安全的HTTPS连接传递cookie。
  • httponly:可选,如果为TRUE,则只能通过HTTP协议访问该Cookie,无法通过JavaScript等方式进行访问。

下面是一个设置Cookies的示例

setcookie('username', 'John Doe', time() + 3600, '/');

这段代码会在客户端生成一个名为username的cookie,值为John Doe,有效时间为3600秒,有效路径为根目录。

读取Cookies

在PHP中读取Cookies也十分简单,直接使用$_COOKIE变量即可。

$value = $_COOKIE['name'];

这样就可以获取名为name的cookie的值了。如果cookie不存在,$_COOKIE变量将是一个空数组。

删除Cookies

要删除一个cookie,只需要将它的有效期设置为一个过去的时间即可。

setcookie('username', '', time() - 3600, '/');

这段代码将删除名为username的cookie。值为空,有效期设置为一个过去的时间,有效路径为根目录。

总结

通过Cookies技术,我们可以很方便地在客户端保存一些信息,实现记住用户登录状态等功能。不过,也需要注意Cookies的一些安全性问题,如不要保存敏感信息,不要设置过长的有效期等。