有哪些专门做校企合作的网站,哪家网络公司的宽带好,哪家app定制开发好,网站留言板怎么做phpsqlPHP中cookie与session使用指南
Cookie和session的出现#xff0c;是为了解决http协议无状态交互的窘境#xff0c;它们都用于存储客户端的相关信息
0x01 Cookie使用
简介
Cookie 是一种在客户端存储数据的机制#xff0c;通常用于记录用户的状态和偏好。下面将介绍如何在…PHP中cookie与session使用指南
Cookie和session的出现是为了解决http协议无状态交互的窘境它们都用于存储客户端的相关信息
0x01 Cookie使用
简介
Cookie 是一种在客户端存储数据的机制通常用于记录用户的状态和偏好。下面将介绍如何在 PHP 中进行 Cookie 的增、删、改、查操作。
在php中设置cookie都是使用setcookie()函数这个函数可以接收7个参数分别代表
setcookie(string $name,?string $value ,?int $expire 0,?string $path ,?string $domain ,?bool $secure false,?bool $httponly false
)$name它定义了Cookie的名称后续我们要使用cookie就可以使用$name来进行访问。 例如 $valueCookie 的值默认为空字符串。注意如果设置为 null在某些情况下可能会被解释为空字符串。 Cookie的值一般用来进行用户身份识别、状态跟踪、安全性控制它是cookie机制的核心这种能力使得网站可以在用户访问不同页面或关闭浏览器后保持特定数据的状态和持久性。例如 一个登录逻辑当用户成功登录后服务器可能会创建一个包含用户身份信息的 Cookie并在用户的每次请求中使用该 Cookie 进行身份验证。在购物车中Cookie 可以用于存储用户的购物车内容方便用户在不同页面或会话中保留购物车状态。还有一种常见的安全机制是将 CSRF 令牌存储在 Cookie 中以便进行跨站请求伪造的防护。 $expireCookie 的过期时间Unix 时间戳格式默认为 0表示会话级的 Cookie。设置为未来的时间戳则表示 Cookie 的过期时间。通俗的来说它就是定义了Cookie的过期时间当 Cookie 过期时它不会立即被浏览器删除而是在浏览器下一次发送请求时服务器检测到 Cookie 已过期于是命令浏览器删除这个过期的 Cookie。可以使用time()当前时间戳函数来定义 例如 cookie(‘user_id’,’admin’,time()60),则表示 Cookie 将在当前时间的 60 秒后过期。 $pathCookie 有效的路径。默认为整个域名。如果设置为 /则在整个域名下有效。也就是说这个参数可以用于控制cookie在哪里才能生效。 例如 我修改成只有根目录下的index文件夹才能使用该cookie可以发现在我创建cookie的index.php无法访问cookie但是在index文件夹下的cookie.php 却能正常去访问cookie。 $domainCookie 有效的域名默认为空字符串表示当前域名。如果设置为 .example.com则在所有子域名下有效。这个参数与path的原理基本一致只不过这里是设置范围是域名需要注意的是如果需要设置多个子域名访问同一个cookie那么就需要设置多个cookie来实现。 $secure用于指定 Cookie 是否只在通过 HTTPS 安全协议传输时发送。设置为 true 或数字 1 表示仅在 HTTPS 下发送该 Cookie而设置为 false 或数字 0 则表示在 HTTP 或 HTTPS 下都发送。 $httponly如果设置为 trueCookie 将被设置为 HTTP OnlyJavaScript 无法访问。当然这里也可以使用数字 1 来表示 true使用数字 0 来表示 false。 当HTTPonly设置为1时当HTTPonly设置为1时
增加 Cookie
使用 setcookie() 函数来添加或设置 Cookie。
// 设置 Cookie名为 user_id值为 123有效期为一小时作用路径为根目录
setcookie(user_id, 123, time() 3600, /);删除 Cookie
通过设置 Cookie 的过期时间为过去的时间来删除 Cookie。
// 删除名为 user_id 的 Cookie
setcookie(user_id, , time() - 3600, /);修改 Cookie
修改 Cookie 实际上是通过设置新的 Cookie 来实现的。
//修改名为 user_id 的 Cookie 的值为 456有效期为一小时作用路径为根目录
setcookie(user_id, 456, time() 3600, /);
//也可以通过超全局数组来修改Cookie
$_COOKIE[user_id] 789获取 Cookie
通过 $_COOKIE 超全局数组来获取已设置的 Cookie 值。
// 获取名为 user_id 的 Cookie 的值
$userID $_COOKIE[user_id];0x02 Session使用
简介
Session 是服务器端存储用户信息的机制用于在用户访问不同页面时保持会话状态。以下是 PHP 中使用 Session 的基本操作。
与Cookie不同的是Session会把用户数据全部保存在服务端然后由服务端生成以个Session-id 发送给客户端作为Cookie使用服务端根据Session-id来判断哪一个才是用户的信息
在session中也有类似setcookie() 的配置方式,不过它是在php.ini配置文件当中。 session.save_handler: 定义 Session 数据的存储方式比如使用文件系统、数据库等默认为文件系统方式files。session.save_path: 指定 Session 数据存储的路径或者连接字符串如数据库连接字符串对于文件系统方式存储的 Session 数据默认是服务器临时目录。session.use_cookies: 控制是否使用 Cookie 在客户端传输 Session ID默认为 1开启。session.name: 设置用于保存 Session ID 的 Cookie 名称默认是 PHPSESSID。session.cookie_lifetime: 设置 Session ID Cookie 的生存时间以秒为单位默认为 0表示会话结束后失效。session.cookie_secure: 设为 1 时表示只有在使用 HTTPS 连接时才发送 Session ID Cookie默认为 0。session.cookie_httponly: 设为 1 时表示 Session ID Cookie 仅通过 HTTP 协议访问JavaScript 无法访问默认为 0。session.gc_probability 和 session.gc_divisor: 控制 Session 回收机制的触发概率用于清除过期的 Session 数据。session.use_strict_mode: 设为 1 时表示强制使用严格模式拒绝非安全的 Session ID。 这些选项可以在 php.ini 中配置以控制 Session 的行为。请注意修改 php.ini 后可能需要重启 Web 服务器才能生效。 增加 Session
使用 session_start() 开启会话并设置 Session 数据。 当使用完session_start()会在客户端生成一个Cookie里面的名称就是PHPSESSID是可以在php.ini中配置session.name来修改也可以通过代码来实现修改.
session_name(PHPSEID); //修改session的名称
session_set_cookie_params(0,/,,0.1);//类似setcookie除了没有名称与值这两个参数其他均与setcookie参数一致它的作用也是修改了session的cookie参数。
session_start(); //启动session机制
$_SESSION[user1] admin; //设置seesion中的用户信息数据
$_SESSION[user2] text;在客户端浏览器中会得到一个名为PHPSEID的cookie。这个 Cookie 的值就是当前会话Session的 ID它是服务器端用来识别特定会话的唯一标识符。 在服务端我们可以设置session.save_path来配置 session服务端的保存位置。 而在这里存储的内容就是以序列化的形成保存用户信息在服务器端这些序列化后的数据会以特定的文件或其他存储方式保存在对应的 Session 目录中文件名通常以 Session ID 命名。 删除 Session
使用 unset() 或 session_destroy() 函数来删除 Session 变量或销毁整个 Session。
// 删除名为 user_id 的 Session 数据
unset($_SESSION[user_id]);// 销毁整个 Session
session_destroy();修改 Session
修改 Session 实际上是重新赋值给 Session 变量。
// 修改名为 user_id 的 Session 的值为 456
$_SESSION[user_id] 456;获取 Session
通过 $_SESSION 超全局数组来获取已设置的 Session 值。
// 获取名为 user_id 的 Session 的值
$userID $_SESSION[user_id];0x03 Cookie与Session的对比
Cookie 和 Session 都用于在 Web 开发中存储用户信息但在存储位置、安全性和使用场景上有所不同。
Cookie与Session的对比
存储位置 Cookie 存储在客户端Session 存储在服务器端。安全性 由于 Session 存储在服务器端相对来说比 Cookie 更安全特别是对于敏感信息。用途 Cookie 更适合用于客户端的持久化存储Session 更适合存储会话相关的数据。