没有 Cookie 的 PHP 会话

2022-08-30 09:31:26

有没有办法在不放置会话cookie的情况下在PHP中启动持久会话?是否有其他方法可以跨页面维护会话,例如基于 IP 地址的解决方案?

我问的原因是,尽管大多数用户都打开了cookie,但我想看看登录系统是否有办法为那些禁用它的人工作(即使我认为禁用cookie只是不必要的偏执狂,就个人而言)。


答案 1

我不认为要求你的用户启用cookie是太多了。当人们完全关闭它们时,我发现这很愚蠢。

否则,您可以将您的设置为“0”以强制会话ID的附加物到php中的URL。但是,这种方法有几个缺点。主要是将状态保留在URL中,而不是Cookie标头。如果用户要复制并粘贴他们所在页面的URL,并且其他人要单击它,则他们将使用相同的会话。session.use_only_cookies

<?php
     ini_set("session.use_cookies", 0);
     ini_set("session.use_only_cookies", 0);
     ini_set("session.use_trans_sid", 1);
     ini_set("session.cache_limiter", "");
     session_start();

答案 2

您可以将 的 ini 值设置为 true,以便激活将会话 ID 附加到每个 URL。看看这个session.use_trans_sid

出于安全目的,您应将会话限制为创建会话的 IP。但是,这并不是完全安全的,因为具有相同IP(例如在代理后面)的人可以重用相同的会话。


推荐