0

我想将一个会话变量传递给其他页面。在我的第一页上,我有:

<?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的会话开始,但我无法获得会话变量。

如果在我的第一页中,我没有给出任何动作,我会得到正确的值,$_SESSION['name']但如果我给出一个动作,会话变量不会改变。为什么?

4

3 回答 3

1

如果您不采取行动,则表单将被提交到同一页面,因此$_POST具有价值,因此您可以将其分配给$_SESSION. 当您contact2.php在表单提交到不同页面时执行操作时,在$_POST具有表单的页面中将不可用,因此会话不会从中获得任何价值。

如果您已将操作设置为contact2.php,则可以session_start()在该页面中执行操作并移动代码

<?php
$_SESSION['name'] = $_POST['name'];
echo $_SESSION['name'];
?>

进入该页面,您应该能够在contact2.php

于 2012-08-22T15:25:22.873 回答
1

这是因为如果您不提供任何操作,表单将提交给自身(同一页面),并且因为您在第一页设置会话变量,它会很好地填充会话变量。当您将操作添加到第二页时,它永远不会填充会话变量,因为第一页没有收到 $_POST,第二页是。

如果您将表单数据提交到不同的页面,则需要在接收页面而不是发送页面上设置会话数据。

于 2012-08-22T15:27:48.030 回答
0

当您在表单中单击提交时,表单将在 contact2.php (action="contact2.php") 中发送给您。创建contact2.php并在下面编写代码:

  session_start();

  session_regenerate_id();

  $_SESSION['name'] = $_POST['name'];

  回声 $_SESSION['name'];
于 2012-08-22T20:17:50.883 回答