【问题标题】:Sessions not showing but are definitely there as shown from next page会话未显示,但肯定存在,如下页所示
【发布时间】: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.phptest_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


【解决方案1】:

好的...整理出来...请阅读...

即使这是一个新页面,代码也有点脱离了其他文件的层...

我不认为这应该是一个问题......

(我原以为每个页面都需要它自己的session_start(),但由于某种原因,它们不需要,而且它们显然都是基于一页......解释起来有点复杂 - 足以说明我正在尝试整理别人的代码:-P)

不管怎样,我检查了所有与这个文件相关的文件,删除了所有的session_start()s,除了第一个文件。现在它工作正常。

数据现在完美显示!

问题:
有人对此有解释吗?
为什么session_starts() 太多会导致问题?

【讨论】:

  • 从技术上讲,多个 session_start() 应该可以工作,尽管速度很慢。生成了 E_NOTICE,也许这搞砸了。无论如何,最好只调用一次,或者在调用之前检查是否设置了 $_SESSION。很高兴你让它工作....
  • @ChristianCerri 感谢您的帮助:-)。奇怪的是它在第一个文件中搞砸了,而不是在第二个文件中......如果有的话,应该是相反的......?
猜你喜欢
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 2018-09-09
  • 2020-04-13
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多