gpt4 book ai didi

php - cookie 与 php 应用程序的 session

转载 作者:行者123 更新时间:2023-12-02 07:13:39 27 4
gpt4 key购买 nike

在实现 php 登录系统 session 或 cookie 时,什么会更好?

最佳答案

浏览器 cookie:

  • 在客户端(浏览器)和服务器(PHP)之间共享
    • 除其他外,这意味着“用户可以直接读取/写入数据,而您无法控制或限制它
  • 限制大小(4K)
  • 在每次页面请求时完整发送

PHP session :

  • 仅存储在服务器上
  • 可以比 cookie 大得多
  • 通过小cookie或请求参数访问

PHP session 在后台创建一个 cookie(默认名为 PHPSESSID,可由 session_name() 配置),因此无论哪种方式,您都在使用 cookie。 session 可以 使用 cookie,但是在 cookie 支持实际上是一个问题的时候,这是一个相当复杂的解决方法。它的作用:重写它可以在输出中找到的所有 URL,将 ?PHPSESSID=your_session_id 附加到它们。问题:它曾经遗漏了一些 URL,而且 URL 看起来很难看(恕我直言)。我已经很长时间没有看到非 cookie PHP session 了(自 2002 年左右)。

PHP session 与 cookie 不同,但是在默认配置中,它们使用 cookie 来存储指向您的 session 数据的“索引”/“指针”。 session 数据存储在 PHP 服务器上,当您有一个现有的 session ID 时,脚本可以访问相应的数据;而对于纯 cookie,您必须将数据保存到 cookie 本身。 Cookie 受大小限制,并且在每次页面请求时发送,因此只发送几个字节长的 cookie 并将数据存储在服务器上是有意义的。

例子:

$_COOKIE: {
'PHPSESSID' => 'a123456ebdf123'
}

$_SESSION: {
'user_name' => 'Piskvor',
8 => 'sadfsadfsdf',
'huge block of text' => '(a huge block of text could be here,
as PHP sessions can usually be bigger than the measly 4K
allowed for a cookie)'
}


/tmp/php_sessions/sess_a123456ebdf123 (a file on server, note the name):
(whatever you see in $_SESSION above, passed through serialize())

这也意味着您应该永远不要将您不希望用户看到或修改的数据存储到 cookie 中 - 例如如果您的代码设置了一个 cookie logged-in-user: Piskvor,甚至是 is-admin: 1,您就无法阻止用户对 built 做同样的事情- 在浏览器工具中。将其存储在 session 变量中更安全,因为数据不会直接暴露给用户,除非您的代码允许 - 用户看到的只是 session ID( session ID 也不完美 - 请参阅“ session 劫持” - 但它们比 cookie 更安全)。

为 TL;DR 人群编辑:使用 session 时,它们通常由 cookie 支持,但它们是一回事。 我建议使用 session (出于上述原因;请注意,这通常意味着“通过 cookie”)。

关于php - cookie 与 php 应用程序的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3150930/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com