【问题标题】:Is this true about cookies in PHP?PHP 中的 cookie 是这样吗?
【发布时间】:2010-07-31 06:26:28
【问题描述】:

如果脚本设置了 cookie 并且用户的浏览器设置为不接受 cookie,那么设置 cookie 函数是否会检测到这一点并改为设置会话?

【问题讨论】:

    标签: php cookies session


    【解决方案1】:

    没有。

    此外,cookie 和会话不能直接比较。事实上,cookie 是会话实现的典型部分。

    当然,您可以检测用户是否接受 cookie。在服务器端,可以通过设置 cookie、转发用户并检查用户是否在新请求中发送了刚刚设置的 cookie。

    记住:

    • 会话是一个更抽象的概念;它将用户与存储在服务器端的一些数据相关联。这通常是通过 cookie 实现的——cookie 存储了一个标识存储数据的密钥;用户在每个请求上发送此密钥,以便服务器可以知道要使用哪些数据。 cookie 的替代方法是在每个请求的 URL 中传递此密钥。这是不太可取的,因为它会污染 URL,并可能使用户面临一些安全风险(会话固定)。
    • Cookie 只是服务器请求用户在每次请求时将其发回的数据片段(发送给自身或更广泛的一组服务器)。

    【讨论】:

      【解决方案2】:

      我猜你的意思是 session.use_trans_sid 设置:

      如果你设置了这个设置:ini_set('session.use_trans_sid', 1); 如果没有可用的 cookie,PHP 会将会话 ID 附加到 URL。

      【讨论】:

      • 正确:如果 SID 处于活动状态,会话 ID 将附加到任何链接。如果 cookie 被禁用,它将使会话工作,但它也会更容易检索会话密钥(例如从浏览器历史记录中)。它使链接更难看;)
      猜你喜欢
      • 2013-07-17
      • 2013-12-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2014-05-29
      • 2018-01-26
      相关资源
      最近更新 更多