【问题标题】:IE not storing $_SESSION variables properly, works in mozilla howeverIE 没有正确存储 $_SESSION 变量,但是在 mozilla 中工作
【发布时间】:2012-01-19 09:07:26
【问题描述】:

这个问题只存在于 IE 中。 Mozilla 和 chrome 工作正常,很难定位我哪里出错了。

例如,我有一个 for 循环构建多级 $_SESSION var:

$seq = 1;
for($d=1; $d<=10; $d++){

    if($_POST["COMPANY_$d"] && $_POST["PHONE_$d"]){
        $_SESSION['c'][$seq]["COMPANY"] = $_POST["COMPANY_$d"];
        $_SESSION['c'][$seq]["PHONE"] = $_POST["PHONE_$d"];
        if($_POST["COUNTRY_$d"] == 'Canada'){
            $_SESSION['c'][$seq]["STATE"] = $_POST["STATE_$d"];
        }else{
            $_SESSION['c'][$seq]["STATE"] = $_POST["STATE_2_$d"];
        }
        $_SESSION['c'][$seq]["COUNTRY"] = $_POST["COUNTRY_$d"];
        $_SESSION['c'][$seq]["ADDY1"] = $_POST["ADDY1_$d"];
        $_SESSION['c'][$seq]["ADDY2"] = $_POST["ADDY2_$d"];
        $_SESSION['c'][$seq]["CITY"] = $_POST["CITY_$d"];
        $_SESSION['c'][$seq]["ZIP"] = $_POST["ZIP_$d"];

        $seq++;
    }//end declare var in $_SESSION

}//end for

当我在 mozilla 中 print_r($_SESSION) 时,我得到了正确的值,但在 IE 中,我得到的只是:

Array
(
    [c] => 11
)

我不确定 11 是来自我的循环还是其他地方的代码。我现在花了 3 个小时用细齿梳检查代码,但找不到任何干扰的东西。这在 Mozilla 中有效,IE 怎么了?我的问题是什么?

【问题讨论】:

  • 您的 php 是否配置为使用 cookie 来存储 $_SESSION?默认情况下,它们存储在内部,永远不会离开网络服务器。
  • 这很奇怪。会话不应受到浏览器的影响,它们是在服务器端管理的。尝试清除您的 IE 缓存和 cookie 列表。在 Firefox 和 Chrome 上执行相同操作。

标签: php internet-explorer session loops session-variables


【解决方案1】:

如果您在 IE 中禁用了 cookie,那么 PHP 将尝试将会话 ID 附加到 URL,以便它可以将会话连接到您的浏览器。如果您的应用程序无意中从您的代码中清除了 URL 中的会话 ID,或者您通过 .htaccess 设置了任何命令,那么这可能是问题所在。我会先检查您的 IE 浏览器并确保它没有禁用 cookie 以验证问题所在。

【讨论】:

    猜你喜欢
    • 2015-05-18
    • 2013-01-08
    • 2010-10-02
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2011-08-11
    • 2013-04-04
    • 1970-01-01
    相关资源
    最近更新 更多