PHP会话不通过帧重定向传输

时间:2017-06-04 09:16:09

标签: php session redirect

我建立了一个网站,供人们报名参加小型活动。

按下提交后 index.php我启动我的函数将数据插入到我的数据库中,并根据它是否有效,设置一个会话变量,其中包含结果。像这样:

部分功能:

$_SESSION['message'] = "That worked, thank you!";
header("location:thankyou.php") 
exit();
在thankyou.php上的

我这样回应:

<?php  echo "<div id='content'><h1>".$_SESSION['message']."</h1></div>"; ?>

一切都在本地运作。

一切都在我的网站空间上托管。

但是因为这是学生会的一个事件,我做了一个框架重定向(将他们的域名保存在浏览器地址栏中)到我的域名。此时,在我提交条目后会话丢失。 thankyou.php保持空白。

我尝试使用var_dump()检查$ _SESSION,但它完全为空。

任何有关如何在保持帧重定向的同时传输$ _SESSION数组的提示都将非常感激!

编辑:session_start()已存在于每个文件中。

1 个答案:

答案 0 :(得分:2)

基本上,您可以将iframe视为新的浏览器窗口,现在显示在同一页面中。你说:

  

我做了一个框架重定向(将他们的域名保存在浏览器地址栏中)到我的域名。

这意味着你试图欺骗用户一点。会话通常的工作方式是使用PHP用于检索会话数据的会话标识符。所以:

  1. 会话ID未正确传递(可能由于安全限制),您最好先检查一下,使用session_id()或浏览器中的devtools来监控http请求。使用Location:标头可能无法传递会话ID,甚至可能是浏览器特定的。
  2. 主窗口设置会话ID,会话在iframe和主窗口中的存储方式可能不匹配。首先要检查的是配置。