【问题标题】:$_SESSION & $_COOKIE PHP TOGETHER OR NOT [closed]$_SESSION 和 $_COOKIE PHP 一起或不一起[关闭]
【发布时间】:2013-05-28 04:38:12
【问题描述】:

我一直在尝试理解 $_SESSION$_COOKIE 变量。我第一次尝试同时使用两者。我一直试图让它们同时工作,我猜会话会抛出 cookie ID 或反之亦然,无论如何你可以将 cookie 和会话一起用于同一目的以提高故障安全性吗?

我有登录脚本选择确认用户登录页面,我们她/他(用户)可以看到他们数据库记录行的特定记录。现在,从这里是一个链接,它将把他们带到一个订单页面,现在在最初设置数组之后传递会话/cookies(我假设的会话)......我如何拉起传递的会话并允许它们仍然保持该数据库连接到他们的文件,以便他们可以订购并向其中添加数据,还是我需要再次连接到数据库?从 user={$_SESSION['user_id']}; 尝试但在 MySQL 命令语句中不起作用。

在脚本中同时使用 COOKIES 和 SESSION 是否可行。如果有人离开购物车并返回没有从 SESSION 保存的信息,而 COOKIE 将保存此信息,那么在所有退出以清除任何个人信息等后销毁 SESSION 是多么安全……同时 cookie 会保存信息。这里的重点是让 COOKIE 保存数据,然后会话将在某个点后销毁 COOKIE 和会话。

【问题讨论】:

  • tl;dr,您只需要知道$_SESSION 创建了一个名为PHPSESSID 的cookie -> 服务器存储一个数组并将其与PHPSESSID 的值相关联(这是一个32 十六进制字符串)。另一方面,$_COOKIE 只存储一个可以在客户端更改的值。我更喜欢$_COOKIE,因为我可以在不依赖 PHP 的情况下将哈希保存在数据库中。
  • “希望这足够清楚”不。
  • "$_SESSION 创建一个名为 PHPSESSID 的 cookie" 并非总是如此
  • 只是一个简短的总结,不作为答案发布:)
  • 不要使用$_COOKIE,除非您了解 HTTP 协议并且完全确定自己在做什么。

标签: php session cookies


【解决方案1】:

$_SESSION 视为存在于服务器而不是客户端计算机上的cookie。我喜欢 CodeIgniter 将会话 ID 存储在数据库中,并将会话 ID 存储在 cookie 中的方法。简单、安全的持久性。

【讨论】:

    【解决方案2】:

    首先要记住的是 HTTP 是一个无状态协议,这意味着在协议级别服务器收到请求,服务请求返回输出并忘记发生了什么。这意味着在请求之间必须记住的任何内容都必须在应用程序级别实现。

    Cookie 会从客户端到服务器来回传递,如果您愿意,可以将其视为客户端或服务器均可读写的共享状态。

    会话是由特定 cookie 值标识的服务器端存储(或者可能是其他类型的请求参数,会话 ID 也可以在获取请求中传递)。所以它只能被服务器读取和写入。存储在 cookie 中的会话 ID 仅存在,以便服务器可以识别客户端并将其与服务器端存储从请求到请求结合起来。

    【讨论】:

    • 基本上 php 处理你的所有信息。单独的饼干更抽象,不是吗?您可以做任何会话可以做的事情,甚至更多。
    • Cookies 可以被客户端或服务器读写,因此它是不可信的。想象一下,如果您在登录后设置 $_COOKIE["authenticated_user"] = "orangepill";我可以进入 chrome 开发工具并将该值重置为“admin”;
    • 哦不,我的意思是,使用 $_COOKIE 之类的会话,$_COOKIE['specialKey']='d41d8cd98f00b204e9800998ecf8427e'
    • 是的......它们只是为了将持久状态从请求绑定到请求而存在。
    【解决方案3】:

    会话通常(但不限于)使用 cookie,但不同之处在于 PHP $_SESSION 仅将一条信息保存到 cookie 中,即 PHP 会话 ID。其余信息存储在服务器上的 PHP 会话目录中,并且只能通过引用用户 cookie 中保存的 id 来调用。

    $_COOKIE 另一方面,实际上以纯文本形式将数据写入本地计算机的 cookie,并根据需要调用该数据。 $_COOKIE 数据是持久的(取决于最终用户的浏览器设置),而 $_SESSION(至少默认情况下不是)。

    【讨论】:

    • "$_SESSION 和 $_COOKIE 使用 cookie",不
    • @Dagon:我真的很抱歉,但他们这样做了。 PHPSESSID 存储在服务器引用的本地 cookie 中。
    • stackoverflow.com/questions/1376731/…,问题被标记为cookies,所以我想它想使用cookie处理会话。 @Phillip:你错了:)
    • 现在你只是在争论。 $_SESSION 确实使用 cookie 作为存储与服务器上的命名空间相关联的 ID 的一种方式。事实上,这是默认方式。
    • 这一切都很好,菲利普,我为你确定了答案。不客气;)
    猜你喜欢
    • 2020-06-30
    • 2012-05-30
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多