PHP 会话不工作

新手上路,请多包涵

我正在使用 wamp2.0 - PHP 5.3、apache 2.2.11,但我的会话没有存储数据。

我有一个接受参数的页面,我想将其(简化版)存储在会话中,所以当我来到

http://www.example.com/home.php?sessid=db_session_id

该脚本如下所示:

 session_start();

$sessid = @$_GET['sessid'];
if ($sessid) {
  $_SESSION['sessid'] = $sessid;
}
var_dump($_SESSION);

和输出:

 array(1) { [0]=> string(13) "db_session_id" }

这很好,但是,当我去 链接(没有 sessid 参数)时, $_SESSION 数组是空的。在进入没有参数的页面之前,我曾尝试评论 $_SESSION['sessid'] = $sessid; 行,但它仍然没有用。

我检查了 session_id() 输出,会话 ID 保持不变。

来自 phpinfo() 的会话设置

Session Support enabled
Registered save handlers    files user
Registered serializer handlers  php php_binary wddx

Directive   Local Value Master Value
session.auto_start  Off Off
session.bug_compat_42   On  On
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   c:/wamp/tmp c:/wamp/tmp
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

编辑:

会话由 iframe 删除。我不知道为什么,但在发表评论时,会议工作正常。问题是,iframe 必须留在那里(这当然不好,但我对此无能为力)。好吧…您知道让会话与 iframe 一起工作的任何解决方法吗?

原文由 Elwhis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 248
2 个回答

只有相对于同一域的框架才能访问会话。例如:

 <?
$_SESSION["foo"]="foo";
?><html>
 <body>
  <iframe src ="test.php" width="200" height="200"></iframe>
 </body>
</html>
<?
print_r($_SESSION);
?>

应该在 iframe 的外部和内部工作。如果您仍然遇到问题,请尝试:

  <?php  session_start();

    $sessid = $_GET['sessid'];
    if (isset($sessid) && $sessid != "" && $sessid != NULL) {
      $_SESSION['sessid'] = $sessid;
    }
    print_r($_SESSION);?>

原文由 user1105787 发布,翻译遵循 CC BY-SA 3.0 许可协议

您必须在每个页面中调用命令 session_start(); 。它对我有用。您还必须在将任何输出(html、输出,甚至空格)发送给用户之前调用它。

原文由 JMendoza 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏