【问题标题】:session ID passed, set, but session does not contains the variables (cookies disabled)会话 ID 已通过,已设置,但会话不包含变量(禁用 cookie)
【发布时间】:2012-07-22 17:32:19
【问题描述】:

在禁用 cookie 的情况下传递会话变量时遇到问题。

脚本 1:

session_start();
$_SESSION['x'] =55;

然后我通过 URL 传递会话 ID(我通过 php init 设置尝试并明确地将其附加到 URL),例如:

<a href="abc.php?<?php echo SID; ?>">abc to</a>

脚本 2 abc.php:

session_start();
session_id($_GET['PHPSESSID']);
echo session_id();

我检查了第二个脚本中的 ID,它完全一样。但是当我尝试使用: $_SESSION['x'] 变量或 print_r on $_SESSION 表明它没有设置。

【问题讨论】:

  • Look here,它可能会解决你的问题。
  • 不幸的是,我在发布这个问题之前阅读了它并没有帮助。

标签: php session


【解决方案1】:

难以置信。经过数小时的搜索,我终于在此处发布此问题的几分钟内找到了解决方案。

顺序应该是:

session_id($_GET['PHPSESSID']);
session_start();

所以首先必须设置 ID,然后会话开始。或者至少看起来是这样。

【讨论】:

    【解决方案2】:
    echo session_id($_GET['PHPSESSID']);
    

    而不是

    session_id($_GET['PHPSESSID']);
    echo session_id();
    

    session_id() 返回 session_id( 字符串 $id ) 因此,要么将其存储在 $var 中,要么在我上面的示例中回显它

    您是否希望得到与 $_SESSION['x'] = 55; 设置相同的结果? ?

    【讨论】:

    • 现在我很困惑,因为 php 手册说你可以使用它来设置和获取会话 ID php.net/manual/en/function.session-id.php 按照你现在的建议更改代码后,我得到了不同的 ID,我无法弄清楚为什么。
    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多