正确使用$ _POST的方法

时间:2012-11-16 20:11:56

标签: php session session-variables

如果我有三个PHP页面,我们称之为one.php,two.php和three.php,我在第一页上使用这样的东西:

<form name = "one" action = "two.php" onsubmit="return validateForm();" method ="post">

我知道我现在可以使用我在one.php中单独传递的变量...

我的问题是,如何在three.php中使用one.php中的变量?

每次我尝试调用它时都会出现“未定义索引”错误,就像我在two.php中那样。

非常感谢你的帮助!

编辑:我应该提到我也在使用Sessions。

在第二页上,我做了类似的事情:

  

$ _ SESSION ['name'] = $ _POST ['name'];

并且它允许我将从第一页收集的名称传递给第二页,但是当我尝试在第三页上执行此操作时,它只是说“未定义的索引”。

4 个答案:

答案 0 :(得分:2)

您需要使用$ _SESSION

,而不是使用post

所以例如:

one.php

session_start();
$_SESSION["mypostvalue"] = $_POST["mypostvalue"];
$_SESSION["mypostvalue1"] = $_POST["mypostvalue1"];

three.php

session_start();
echo $_SESSION["mypostvalue"];
echo "<br />";
echo $_SESSION["mypostvalue1"];

然后,一旦你完成了会话数据,你需要像这样摆脱它:

session_start();
$_SESSION = null;
session_destory();

注意每页只使用一次session_start(),并且在将任何数据发送到浏览器之前,例如html或空格。

答案 1 :(得分:1)

  

我知道我现在可以使用我在one.php中单独传递的变量...

不是这样的。

表单中成功的表单控件会将其值提交到two.php。然后,您可以通过$_POST['name_of_control']

访问它们

如果您使用PHP变量创建的值生成表单控件(可能是隐藏类型)(确保逃避它们以抵御XSS攻击),那么它们将出现在表单中并被提交。

  

我的问题是,如何在three.php中使用one.php中的变量?

这取决于浏览器如何获得three.php。您可以生成另一个表单并将值再次放入隐藏的输入中。

答案 2 :(得分:0)

$ _ POST是每个请求您应该使用$ _SESSION或$ _GET将它们传递给第三个文件。

答案 3 :(得分:0)

确保输入元素的名称正确无误。如果您想在 two.php 中使用$_POST["myvar"],则 one.php 中的name属性必须为“myvar”。

<form action="two.php" method="post">
    <input type='text' value='test myvar' name='myvar' />
    <input type='submit' value='go to 2' />
</form>

要在 three.php 中使用 one.php 中的变量,只需将它们作为隐藏输入传递。也就是说,将它们回显到 two.php

中的表单
<form action="three.php" method="post">
    <input type='text' value='test var 2' name='myvar2' />

    <?php echo "<input type='hidden' name='myvar' value='" . $_POST["myvar"] . "' />"; ?>

    <input type='submit' value='go to 3' />
</form>