【发布时间】:2016-08-26 07:18:39
【问题描述】:
莫名其妙!
我有一个页面应该存储一些会话,但是当我尝试打印它们时,什么都没有显示。
那里肯定有会话,因为第一页有一个链接可以将我带到第二页,在第二页中我可以成功显示会话!
<?
session_start();
include "frontend/header.php";
?>
</head>
<body>
<div id="header">
<? include "frontend/menu.php";?>
<div class="clear"></div>
</div>
<div id="green_bg" style="display:block">
<?
echo "1";
echo "<pre>";print_r($_SESSION); echo"</pre>";
?>
<div class="main thank-you">
<a class="thank_you">Thank You</a>
<p>Your phone number will be refilled in a moment. <br/>
Please check your emails for confirmation.
</p>
<div class="signUp4MonthlyRefills" style="background-color: #f7931e; padding: 20px;">
<h3>Do you want to save time and effort?</h3>
<br/>
Then leave the refills to us!!
<br/>
<br/><i>Introducing</i>... Auto Monthly Refills!!
<p>Sign up for automatic monthly refills and you'll never have to worry about your phone running out of credit!
<h1 align="center"><a href="auto-monthly-refills-form.php" style="font-size: 30px">Click Here To Sign Up.</a></h1></p>
</div>
<br />
</div>
</div>
<? include "frontend/footer.php";?>
当代码调用会话时,页面只显示“1”,然后显示一个空数组(即打印“array()”)。
然后,当单击“auto-monthly-refills-form.php”链接时,它会显示所有会话!
"auto-monthly-refills-form.php" 文件看起来就像这样:
<?
session_start();
echo "<pre>";print_r($_SESSION); die();
现在显示会话(大量数据)!!
如果有人有任何想法可能是什么问题...
更新:
即使在两个页面上删除 session_start() 后,它仍然可以正常工作!这怎么可能?
【问题讨论】:
-
第二页上显示的值是多少?
-
wierd... 在第一页的 session_start() 之后尝试 print_r。另外,如果刷新页面会发生什么?会不会是缓存?另外,如何跳转到第一页?如果您从第二页链接到第一页,它仍然可以吗?
-
调试:我会:1)设置错误报告:Display PHP Errors。 2)
var_dump($_COOKIE, $_SESSION);在两个脚本中的会话开始后立即。为什么?您应该会看到会话 cookie 和任何会话数据。 3) 为确保会话未处于活动状态,请在 session_start 之前添加var_dump(isset($_SESSION));。在这两种情况下,它都应该报告false。这可能会提供足够的线索来确定正在发生的事情。 -
因此,假设您的文件名为
test_file1.php和test_file2.php2。然后在您的网络浏览器中 - 您输入:http://localhost/test_file1.php,它会报告var_dump(isset($_SESSION));在session_start();指令之前返回 true?这听起来不对。您不是在“框架”中运行这些文件吗?请将您正在使用的 PHP / O/S 和网络服务器的版本添加到您的问题中。 -
您是否解决了@ChristianCerri 提出的缓存问题?尝试按
shift + f5以完全重新加载页面。
标签: php html session session-state