1

登录页面:

<?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

4

2 回答 2

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 />";

?>

现在,如果您没有看到这些修订版的身份验证,您可以尝试:

  1. 更改门户中的代码,使其仅转储会话,以便您查看所拥有的内容: session_start(); var_dump($_SESSION);
  2. 检查以确保启用了错误报告,因为 PHP 可以帮助您快速识别许多潜在问题(例如,索引不存在,标头已发送等): ini_set('display_errors','1'); 错误报告(E_ALL);
  3. 您可以检查您的 PHP 配置文件 (php.ini) 以确保没有直接导致会话问题的设置。
于 2013-08-20T02:38:19.033 回答
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 />";
?>
于 2013-08-20T02:03:50.330 回答