【问题标题】:Passing session variables with cookies turned off在关闭 cookie 的情况下传递会话变量
【发布时间】:2016-12-19 21:46:44
【问题描述】:

我正在尝试在我创建的两个页面之间传递会话变量。我的浏览器(firefox 最新版本)上的 Cookie 已关闭,但出现错误。这是我的代码

index.php

<?php

session_start();

$_SESSION['name'] = "bob";

?>
<p>
    go to next page <a href="session.php?<?php echo SID; ?>">click here</a>.
</p>

session.php

<?php

session_start();

echo $_SESSION['name'];

?>

PHP 无法识别 $_SESSION['name'] 索引并输出如下错误

注意:未定义的索引:第 3 行 C:\xampp\htdocs\S2\session.php 中的名称

注意:我在 php.ini 文件 session.use_trans_sid=1 上启用了 trans_sid

【问题讨论】:

  • 您是否有充分的理由要传输会话 ID?否则,请尝试并发布结果。
  • @ManuelMannhardt 因为他禁用了 cookie?
  • 更新 php.ini 后是否重新启动了 XAMPP?
  • @Paulpro 我刚刚尝试重新启动 xampp 仍然给我同样的错误。当我在实时服务器上尝试时,编辑它工作正常,我猜这个问题与 XAMPP 有关。
  • 看我的回答。我完全尝试了您所做的并且遇到了相同的行为。我尝试了一些事情并找到了一个对我有用的解决方案(这里是 SO btw)

标签: php session


【解决方案1】:

我重新创建了您的场景,对我有用的是将这些设置放在 session_start() 之前:

 ini_set("session.use_cookies", 0);
 ini_set("session.use_only_cookies", 0);
 ini_set("session.use_trans_sid", 1); // well you can leave this since you have it already in php.ini
 ini_set("session.cache_limiter", "");

我希望这能解决您的问题。当然你也可以编辑你的 php.ini 而不是硬编码。

我想补充的是,如果有人获取了您的会话 ID,使用 trans_sid 会造成安全漏洞。之前进行一些 IP 检查,并将访问限制为仅创建会话 ID 的 IP。请记住,如果使用带有旧会话 ID 的旧链接,使用 trans_id 也会破坏您的应用。

链接:https://stackoverflow.com/a/3740866/6622577

【讨论】:

    【解决方案2】:

    绝对应该注意在 URL 中传递会话 ID 是一种安全风险,绝对不可取

    在将session.use_trans_sid 设置为true(即填充SID 常量)时,您还需要将session.use_only_cookies 设置为false,否则PHP 会首先查找cookie。


    参考:

    session.use_trans_sid 实际上是 PHP 4 的一项功能,当与具有 --enable-trans-sid 编译时间标志的 PHP 构建一起使用时,它将透明地使用 SID 常量填充您的相对 URL。

    From the manual

    PHP 能够透明地转换链接。除非您使用的是 PHP 4.2.0 或更高版本,否则您需要在构建 PHP 时手动启用它。 Unix下,通过--enable-trans-sid进行配置。如果启用此构建选项和运行时选项session.use_trans_sid,则相对 URI 将自动更改为包含会话 ID。

    Also

    注意:与基于 cookie 的会话管理相比,基于 URL 的会话管理具有额外的安全风险。例如,用户可以通过电子邮件将包含活动会话 ID 的 URL 发送给他们的朋友,或者用户可以将包含会话 ID 的 URL 保存到他们的书签并始终使用相同的会话 ID 访问您的网站。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 2014-10-24
      • 1970-01-01
      • 2021-11-22
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多