0

在从 5.2.17 到 5.3.13 的服务器升级中,我的 $_SESSION 变量不再在页面之间传递。

在第 1 页中,我设置了 $_SERVER["isLoggedIn"] = true 并且在第 2 页中我正在测试,但发现所有 $_SESSION 变量都未设置。

我已经为一个简单的例子减少了代码,如下所示:login.html:

<?php
session_start();
    $_SESSION["isLoggedIn"] = true;
    $_SESSION['visitorLanguage']  = "en" ; 


    if ($_SESSION["isLoggedIn"]  == true ){
        print "<p> Log in successful. </p>";
        print "<script>window.location='index.html? lang=".$_SESSION['visitorLanguage']." '</script>";
        }

?>

索引.html:

<?
session_start();
echo "Version: ".phpversion(); 
echo " Session Data: "; 
echo "Is logged in: " . $_SESSION["isLoggedIn"]. "<br/>";
echo "Visitor Language: " . $_SESSION["visitorLanguage"];
?>

回报:

Version: 5.3.13 Session Data: Is logged in: 
Visitor Language
and in 5.2:
Version: 5.2.17 Session Data: Is logged in: 1
Visitor Language: en
4

2 回答 2

0

与此类似的问题只花了我大约 3 天的时间,请确保在 php.ini 中注释掉request_order = None或设置为“ GPCS ”,否则会话变量将不会添加到超级全局数组 REQUEST 中。

于 2013-11-07T03:27:48.847 回答
-1

据我了解,没有以 .php 结尾的名称的页面根本不应该进入 php 处理器。它在 5.2 中起作用比在 5.3 中不起作用更神秘。简而言之,将您的索引页设为 index.php,确保在服务器上删除 index.html(以及在本地,您不希望它再次上传)......一切都应该很好。要回答您的问题,安装 5.2 是一种安装,安装 5.3 是另一种安装。一个可能设置有与另一个不同的选项。

于 2013-05-17T18:56:22.730 回答