PHP-如何存储用户';不使用cookie的用户首选项(移动或完整站点)

PHP-如何存储用户';不使用cookie的用户首选项(移动或完整站点),php,session-variables,Php,Session Variables,我需要能够加载用户先前设置的首选项(在同一会话中,不必在会话之间保持),如果他们想要查看站点的移动版本或完整版本 我希望通过一种无cookie的方法来实现这一点,但是我非常确定在$\u会话变量中存储内容将写入cookie 有更好的方法吗 谢谢大家! Xavier。您可以为会话禁用cookie: ini_set('session.use_cookies', 0); ini_set('session.use_only_cookies', 0); ini_set('session.use_trans_

我需要能够加载用户先前设置的首选项(在同一会话中,不必在会话之间保持),如果他们想要查看站点的移动版本或完整版本

我希望通过一种无cookie的方法来实现这一点,但是我非常确定在$\u会话变量中存储内容将写入cookie

有更好的方法吗

谢谢大家!


Xavier。

您可以为会话禁用cookie:

ini_set('session.use_cookies', 0);
ini_set('session.use_only_cookies', 0);
ini_set('session.use_trans_sid', 1);
这将迫使任何客户端将其会话id附加到他发出的每个请求中,以便进行身份验证。(实际上,您的服务器会将其附加到任何生成的链接中,因此客户端会自动包含它)

然而,这有几个缺点:

  • 当传输包含会话id的url时,会话可以“复制”到其他客户端
  • 关闭浏览器并重新打开它会重置会话
  • 离开您的网站可能会在另一台服务器的“referer”中列出一个有效的会话id,它可能会显示在某个地方,因此任何未知的人都可以访问(可能仍然有效)会话

    • 首先,有两种饼干

    • 可怕的客户饼干
    • 会话是cookies。会话cookie只是服务器为标识用户会话(而不是用户!)而设置的唯一散列,您可以通过向站点上的每个链接添加一个查询参数,并为会话添加一个编号来实现同样的目的
    • $\u会话变量包含您在链接到用户会话的服务器上设置的变量


      您可以禁用会话cookie,并且只能在php.ini中使用查询参数

      保存到$\u会话的数据不会写入cookie。它会写入服务器上的文件。写入cookie的是会话id。PHP可以使用此会话id在服务器上查找文件。然后它在服务器上打开文件,将数据反序列化回数组,然后您就可以访问$\u会话。@JonathanKuhn但它仍然在客户端生成一个(包含会话id的)cookie。这不是我刚才说的吗<代码>写入cookie的是会话id。@JonathanKuhn是的,但他说:“没有cookie”-不是“cookie中没有数据”。@dognose但我只是确保OP明白会话数据没有写入cookie,只是会话id
      我非常确定,将东西存储在$\u SESSION变量中会写入cookie
      是不明确的,因为它们可能意味着$\u SESSION中的数据被写入。