【问题标题】:Cannot save array to session, comes up empty无法将数组保存到会话,出现空
【发布时间】:2012-01-19 21:16:00
【问题描述】:

如果你能让这个简单的 SESSION VARIABLES 示例发挥作用,我会拥抱你!
我无法让会话变量在我的网站上运行。我正在使用 Chrome 浏览器在 Windows 7 上运行 php5。

这里是发送页面:

    <?php
     session_start();
     $red='red';
     $blue='blue';
     $green='green';

     $SESSVARS=array($red,$blue,$green);

     $_SESSION['USERVARS']= $SESSVARS; 

     ?>

 <p>Set Sessionvars</p>
 <form action="SessVarCheck.php" method="post">
 <input name="Submit" type="submit">
 </form>

这是结果页面:

   <?php
    session_start();
    echo "val 1:".$_SESSION['USERVARS'][0];
    echo "val 2:". $_SESSION['USERVARS'][1];
    echo "val 3:". $_SESSION['USERVARS'][2];
   ?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SessVarCheck.php</title>
</head>

<body>
The Result page
</body>
</html>

我对所有三个回声都感到空虚。 欢迎任何想法!

【问题讨论】:

  • 你在服务器上运行什么? (或者这都是本地的)
  • 你试过 var_dump($_SESSION); 吗?

标签: php session session-variables


【解决方案1】:

确保在两个页面上输出任何页面内容之前调用session_start()。 (见“注意”部分here

(我假设您可能已经知道这一点,但鉴于我在发送页面上没有看到“”,我认为该脚本可能还有更多内容。另外,我不知道有多敏感这个要求是 - 只是 php 标记之前的空格可能足以成为问题。)

【讨论】:

  • 啊哈!我在我的 IIS 7 测试服务器上本地运行它。当我将它上传到运行在 Linux 上的网络主机(Apache)时,它运行良好。 IIS 的怪异之处?
【解决方案2】:

尝试一些事情:

1) 在您的结果页面上执行var_dump($_SESSION),以查看会话的原始内容是什么

2) 验证会话是否正常工作。在 session_start() 调用之后的某处将echo "SessionID: " . session_id(); 添加到两个脚本中。如果您没有在每个页面上获得相同的会话 ID,那么您每次都会获得一个新会话,这很可能是 cookie 问题。

【讨论】:

  • 我没有关闭它,因为会话变量在我的 IIS 测试服务器上仍然不起作用,即使我的 Linux/Apache Web 主机上没有问题。如果有人偶然发现答案,我会保持打开状态
猜你喜欢
  • 2020-04-23
  • 2012-07-09
  • 2015-10-31
  • 2019-04-15
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
相关资源
最近更新 更多