我有一个使用会话变量的应用程序没问题。我在使用 when 的每个页面上的标题之前开始会话,它一直很好,然后当我导航到设置会话变量的页面以外的页面时,似乎突然之间我遇到了未定义的索引错误。但仅在某些浏览器上。有时会保留会话,有时则不会。
似乎有时没有存储 cookie。我已经使用不同的浏览器进行了检查,有时会存储 cookie,有时不会。
我做了一个实验。我正在使用 Firefox 来使用应用程序,并且我一直在关注存储会话的 tmp 文件夹。我把它清理干净了。使用 firefox,我开始使用该应用程序,使用会话正在使用的所有页面,最后我检查了 tmp 文件夹,其中有一个会话文件。
与 Internet Explorer 完全相同,现在有 7 个不同的会话文件。
我将 PHP 5.3.0 与 WAMP 堆栈一起使用。阿帕奇 2.2.11。在我的 phpinfo() 中启用了会话支持。
我在第一页调用 var dump 并打印出会话数据。在任何后续页面上,会话变量都是空的。
<?php var_dump($_SESSION); ?>
array(0){}
任何人都可以帮我找出解决方案吗?
更新 - PHP INI 会话设置
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 82.68.26.169 82.68.26.169
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 从另一个域(我创建)中提取页面,所以我试图设置的 cookie 被阻止。设置一个 P3P 标头,问题似乎解决了!