【发布时间】:2017-06-25 13:40:57
【问题描述】:
客户:
start_session() 创建一个 cookie(默认):Name: PHPSESSID; Content: 1q2w3e4r5t; Domain: '/'; Expires:...
服务器:
它还创建了一个存储在(我的案例)中的文件:/var/lib/php/sessions。在那里打电话:sess_1q2w3e4r5t。 (绝对路径:/var/lib/php/sessions/sess_1q2w3e4r5t)
所以我们有两个物理的东西绑定到我刚刚创建的会话。
两者兼有有何意义?
无论
use_only_cookies选项如何,我都可以将我的会话存储在/var/lib/php/sessions中吗?我有一个带有
$_SESSION['counter']变量的经典示例。这意味着,每次我重新加载example.php页面时,$_SESSION['counter']都会增加(++)1。因此,在按下F5按钮的循环中,假设我得到55作为$_SESSION['counter']的值。最后我是那个 cookie,但 不是/var/lib...文件。删除之后我得到一个56并且循环正常继续。这只是引起了我的兴趣并让我想到了这个问题。是否需要会话 cookie?我的网站是否仍然可以只在服务器中存储会话而不使用 cookie?
这就是我删除 cookie 的方式。注意counter 的值为 69。
然后F5:
【问题讨论】:
-
嗯?没有 cookie,您的所有请求都将是无状态的。
-
但是.. 就像我说的,在删除 cookie 之后,
$_SESSION['counter']仍然保持相同的值...如果我将其称为一种请求时,请纠正我 -
您是否混淆了删除 cookie 与删除会话或会话变量不同的事实?你必须在 PHP 中使用
unset($_SESSION['counter'])来失去它的价值。 -
好吧,最近我读到了cookies vs sessions 和this question。我意识到一个存储在服务器中,另一个存储在客户端。但是,仍然可能是我的网站仅在服务器中存储会话而不使用 cookie 的一种方式?
-
PHP 用于会话的 cookie 是
PHPSESSID。GLOBAL_SESS一定是你在某处设置的。