当前位置: 首页 > news >正文

PHP-Cookie

Cookie 是什么?

cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

设置Cookie

在PHP中,你可以使用 setcookie() 函数来设置一个Cookie。这个函数必须在任何HTML输出之前调用,因为HTTP头(包括设置Cookie的头)必须在发送任何实际内容之前发送。

<?php
setcookie("user", "John Doe", time() + (86400 * 7)); // 86400 = 1天

上面的代码设置了一个名为 "user" 的Cookie,值为 "John Doe",并且这个Cookie将在7天后过期。time() + (86400 * 7) 计算了7天后的时间戳

读取Cookie

一旦设置了Cookie,你就可以通过全局数组 $_COOKIE 来访问它。

<?php
setcookie("user", "John Doe", time() + (86400 * 7)); // 86400 = 1天
if(isset($_COOKIE["user"])) {echo "User is " . $_COOKIE["user"];} else {echo "User is not set.";}

输出结果:

删除Cookie

要删除一个Cookie,你可以通过设置它的过期时间为过去的一个时间点来实现。注意,删除Cookie时,你必须设置与创建Cookie时相同的路径和域。

<?php
setcookie("user", "John Doe", time() + (86400 * 7)); // 86400 = 1天if(isset($_COOKIE["user"])) {echo "User is " . $_COOKIE["user"];} else {echo "User is not set.";}// 设置Cookie的过期时间为过去的时间
setcookie("user", "", time() - 3600);

然而,仅仅设置过期时间可能不足以删除所有Cookie,特别是如果它们有特定的路径或域设置。为了确保删除,你应该尽量使用与创建时相同的参数来调用 setcookie()。

Cookie的属性

setcookie() 函数还支持其他几个参数,允许你设置Cookie的路径、域、安全性(HTTPS)和HTTPOnly属性。

setcookie("TestCookie", $value, time() + 3600, "/path/", "example.com", true, true);

  1. 路径(/path/):Cookie有效的服务器上的路径。
  2. 域(example.com):Cookie有效的域。
  3. 安全性(true):如果设置为 true,则Cookie只能通过HTTPS发送。
  4. HTTPOnly(true):如果设置为 true,则Cookie不能通过客户端脚本访问(例如JavaScript)。这增加了安全性,因为它防止了跨站脚本(XSS)攻击中Cookie的窃取。

注意事项

  1. Cookie的大小限制通常是4KB。
  2. 浏览器对同一域名下的Cookie数量有限制(通常是20个)。
  3. Cookie是存储在客户端的,因此它们可以被用户查看和修改。不要依赖Cookie来存储敏感信息。
  4. 对于需要更高安全性的数据,应该考虑使用HTTPS和会话(Session)机制。

相关文章:

  • 攻防世界 - Misc - Level 6 | Wireshark
  • 字节一面:后端开发
  • 卡洛诗西餐的文化破圈之路
  • 3.2/Q2,Charls最新文章解读
  • SARSA 算法详解:python从零实现
  • TDA4VM SDK J721E (RTOS/Linux) bootloaders梳理笔记
  • 51c嵌入式~单片机~合集9
  • Calculus on Computational Graphs: Backpropagation
  • VB.net序列化和反序列化的使用方法和实用场景
  • xray-poc编写示例
  • Java 泛型参数问题:‘ResponseData.this‘ cannot be referenced from a static contex
  • GoogleTest:简单示例及ASSERT/EXPECT说明
  • 【编译原理】第四章 习题
  • pandas读取Excel数据(.xlsx和.xls)到treeview
  • 传感器的精度,灵敏度等概念介绍
  • terraform实现本地加密与解密
  • vue3内置组件Suspense的使用
  • 在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
  • Nginx 核心功能02
  • WGCLOUD使用 - 如何监控RabbitMQ运行参数
  • 2025五一档首日电影票房破亿
  • 五一假期上海口岸出入境客流总量预计达59.4万人,同比增约30%
  • 韩国检方结束对尹锡悦私宅的扣押搜查
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 庄语乐︱宋代历史是被“塑造”出来的吗?
  • 逛了6个小时的上海车展。有些不太成熟的感受。与你分享。