无法将PHP会话变量传递给多个页面

时间:2012-03-05 17:27:27

标签: php session

所以我在将php会话变量传递给多个页面时遇到了问题。

基本上我有一个收集答案的表格。在提交时,用户被带到一个页面,该页面取决于他们在表单中做出的选择,他们将看到在iframe中加载的页面。我已经想出如何使它从表单提交到第一页工作,但是当我尝试将变量转移到另一个页面(通过超链接)时,它们不会停留。

下面是我的代码:

形式

<form method="post" action="offers.php"> 

0. <input type="text" name="name0"/> <br/><br/>
1. <input type="text" name="name1"/> <br/><br/>
<input type="submit" name="submit"/> </form>

第1页(在表单提交offer.php之后)

<?php 
session_start(); 

$_SESSION['name0'] = $_POST['name0'];
$_SESSION['name1'] = $_POST['name1'];


$name0 = $_POST['name0'];

$name1 = $_POST['name1'];


if ($name0 == 'dave')
$site="offer1.php";
elseif ($name0 == 'john')
$site="offer1a.php";
else
$site="http://websiteC.com";

?>

<HTML>
<body>
<div style="height:90px;">header</div>
<iframe src="<?php echo $site; ?>" name="offerFrame" style="width:100%; height:100%;"     align="center"></iframe>
<br>
<a href="offer2.php">dfsdf</a>


</body>   
</HTML>

page2(用户通过超链接 - offer2.php到达此处)

<?php 
session_start(); 

$_SESSION['name0'] = $_POST['name0'];
$_SESSION['name1'] = $_POST['name1'];


$name0 = $_POST['name0'];

$name1 = $_POST['name1'];


if ($name1 == 'dave')
$site="2a.php";
elseif ($name1 == 'john')
$site="2b.php";
else
$site="http://websiteC.com";

?>

<HTML>
<body>
<div style="height:90px;">header</div>
<iframe src="<?php echo $site; ?>" name="offerFrame" style="width:100%; height:100%;"  align="center"></iframe>
<br>
<a href="offer3.php">dfsdf</a>


</body>
</HTML>

感谢您的帮助

-Dave

3 个答案:

答案 0 :(得分:1)

您只需分配一次会话变量,因此第1页正确,然后可用于整个会话,使用每页顶部的session_start()。

第2页(用户通过超链接来到这里 - offer2.php)

<?php 
session_start(); 

$name0 = $_SESSION['name0'];
$name1 = $_SESSION['name1'];

答案 1 :(得分:1)

这是第2页的问题:

$_SESSION['name0'] = $_POST['name0'];
$_SESSION['name1'] = $_POST['name1'];

用户通过超链接到达那里,因此$_POST数组为空,并且您使用空的数据覆盖会话变量。

您可以通过会话变量获取数据:

$name0 = $_SESSION['name0'];
// etc.

答案 2 :(得分:1)

在第2页中,您使用不存在的post变量覆盖会话变量。改变这个:

$_SESSION['name0'] = $_POST['name0'];
$_SESSION['name1'] = $_POST['name1'];


$name0 = $_POST['name0'];

$name1 = $_POST['name1'];

到此:

$name0 = $_SESSION['name0'];

$name1 = $_SESSION['name1'];