什么是php中的会话和cookie以及它存储的位置
我用谷歌搜索了一下。但我找不到确切的答案。请澄清
提前致谢
答案 0 :(得分:3)
HTTP是stateless。这意味着无论何时您从Web服务器请求某些内容,它都会为所请求的页面提供服务并立即忘记您。
想象一下购物车:
您向购物车添加了一些内容。服务器将有一些数据存储以记住您将项目X放入购物车,但由于HTTP是无状态的,下次您调用服务器时,它将不记得是您将某些东西放入购物车。 Web服务器可以在返回的页面上创建一个表单,并使用您添加的每个项目填充该表单。现在您添加了另一个项目,但也发送了您已添加的项目。重复。这有效地将交互的整个状态转移到每个请求上。但那是相当低效和不安全的。
使用Sessions enabled,网络服务器会为您创建一个唯一的ID,即所谓的Session ID。这将用于在后续请求中链接您和购物车。通常,会话ID以Cookie的形式发送到浏览器。从技术上讲,这通过HTTP标头发生:
Set-Cookie: PHP_SESS=abcdefg123456
浏览器读取标题并在浏览器内的cookie存储中创建或更新cookie文件。通常,cookie文件只是计算机上文本文件中的键/值存储。如果你想看看谷歌的“浏览器名称存储我的cookie的地方”。
在对同一个网络服务器的下一个请求中,您的浏览器将发送cookie并且网络服务器现在能够将此ID与服务器上的某些数据存储(无论设置为session save handler)相关联,实例登录信息,购物车内容等
有关详细信息,请参阅我在问题下面链接的PHP手册参考。
答案 1 :(得分:2)
Cookie存储在浏览器中,而不是PHP中。你可以通过查看$ _COOKIE ['cookiename']来获取浏览器发送的cookie,但据我所知你不能设置这样的cookie - 你需要使用setCookie(),或者可能是header('Set- cookie:...')。
会话可以存储在任何地方,但它们通常只是服务器文件系统上的文件;你的php.ini(或ini_get()函数)可能有助于找到哪里。尝试:
$session_file_name = ini_get('session.save_path')."/sess_".session_id();
答案 2 :(得分:2)
cookie是服务器请求客户端存储和发送后续请求的一些数据。
session是存储在服务器上的一些数据,通过会话ID连接到用户。此会话ID大部分时间存储在cookie中。
会话可以存储在文件系统上,很可能存储在临时目录中,也可以存储在数据库中。
Cookie和会话都有与之相关的过期日期,因此它们不会永远持续下去。
答案 3 :(得分:0)
Cookie是存储在客户端(浏览器)的一小段数据,会话是存储在服务器端的文本文件,其名称存储在cookie中。
就是这样。