PHP会话变量不在页面之间保存?

时间:2013-08-20 01:08:55

标签: php session-variables

登录页面:

<?php

session_start();

#echo session_id ();
$_SESSION["auth"]= "yes";

echo '<a href="Portaltest.php?t='.time().'">portal page link.  Auth set to: {$_SESSION["auth"]}</a>';

?>

门户页面:

<?php session_start();

echo "auth = {$_SESSION["auth"] } <BR />";
echo session_id ();


?>

auth会话在两个页面之间以某种方式丢失了!

修改

这是一个测试网址:

http://proserv01.services.lyris.com/NFPInsurance/UnsegmentedMemberReport/logintest.php

2 个答案:

答案 0 :(得分:3)

在解决问题时,我倾向于做一些事情,但让我们从你的代码开始。

以下是您的网页代码的更新版本,因此您实际上会看到存储在$ _SESSION ['auth']中的值(您的报价引起了一些问题):

<?php

session_start();
$_SESSION["auth"] = "yes";
echo '<a href="Portaltest.php?t='.time().'">portal page link.  Auth set to: ' . $_SESSION["auth"] . '</a>';

?>

以下是门户网站页面的更新版本,它会在结束大括号后删除额外的空格:

<?php

session_start();
echo "auth = {$_SESSION["auth"]} <BR />";

?>

现在,如果您没有看到带有这些修订版的auth,您可以尝试:

  1. 更改门户网站中的代码,以便它只是转储会话,以便您可以看到您所拥有的内容:session_start();的var_dump($ _ SESSION);
  2. 检查以确保启用错误报告,因为PHP可以帮助您快速识别许多潜在问题(例如,索引不存在,标题已经发送等):ini_set('display_errors','1 “);使用error_reporting(E_ALL);
  3. 您可以检查您的PHP配置文件(php.ini),以确保没有直接导致会话问题的设置。

答案 1 :(得分:1)

注意:仅用于测试目的。

我不确定预期的结果是什么,但我会将其作为答案提交给PHP评论中的解释。

尝试一下:

<?php

session_start();
$_SESSION["auth"]= "yes";

// will echo: portal page link. Auth set to: yes
echo '<a href="Portaltest.php?t='.time().'">portal page link.  Auth set to: ' . $_SESSION["auth"] . '</a>';
echo "<br>";

// will echo: auth = yes
echo "auth = {$_SESSION["auth"] } <BR />";
?>