我想将一个会话变量传递给其他页面。在我的第一页上我有:
<?php
session_start();
?>
然后:
<form class="form1" method="post" action="contact2.php" id="form1">
<ul>
<li>
<label for="name">*Name:</label>
<input type="text" name="name" placeholder="Black Nova"class="required" role="input" aria-required="true"/>
</li>
<li>
<input id="submit" class="submit .transparentButton" value="Next" type="submit" name="submit"/>
</li>
</ul>
<br/>
</form>
<?php
$_SESSION['name'] = $_POST['name'];
echo $_SESSION['name'];
?>
在contact.php
我的会话开始,但我无法获得sesssion变量。
如果在我的第一页中,我没有给出任何动作,我在$_SESSION['name']
中得到了正确的值,但如果我给出一个动作,会话变量就不会改变。为什么呢?
答案 0 :(得分:1)
如果您不提供操作,则表单会被提交到同一页面,因此$_POST
具有价值,因此您可以将其分配到$_SESSION
。当您将操作设为contact2.php
时,表单会提交到其他页面,因此$_POST
将无法在包含该表单的页面中使用,因此会话将不会从中获取任何值。
如果您已将操作设置为contact2.php
,则可以在该页面中执行session_start()
并移动代码
<?php
$_SESSION['name'] = $_POST['name'];
echo $_SESSION['name'];
?>
进入该页面,您应该能够在contact2.php
答案 1 :(得分:1)
因为如果你不提供任何动作,表单将提交给自己(同一页面)并且因为你在第一页中设置会话变量它会填充会话变量。当您将操作添加到第二页时,它永远不会填充会话变量,因为第一页没有收到$ _POST,第二页是。
如果您将表单数据提交到其他页面,则需要在接收页面上设置会话数据而不是发送页面。
答案 2 :(得分:0)
当您单击表单中的提交时,表单将发送给您contact2.php(action =“contact2.php”)。 创建contact2.php并在下面编写代码:
session_start(); session_regenerate_id(); $_SESSION['name'] = $_POST['name']; echo $_SESSION['name'];