2012-11-16 78 views
0

如果我有三个PHP页面,让我们给他们打电话one.php,two.php和three.php,我用这样的第一页上:

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

我知道我现在可以使用我通过one.php在two.php中传递的变量...

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

我每次尝试打电话给他们时都会收到“undefined index”错误,就像我在two.php中一样。

非常感谢您的帮助!

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

在第二页上,我做这样的事情:

$ _SESSION [ '名'] = $ _ POST [ '名'];

它允许我将从第一页收集的名称传递给第二页,但是当我在第三页上尝试这样做时,它只是说“未定义索引”。

+0

你怎么称呼three.php,得到什么? POST?包含在two.php中? – sglessard

+0

会议可能会有所帮助。在页面之间共享数据。 –

+0

@Somy A - 我应该提到的是,我使用的会话。 – UndefinedReference

回答

0

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

2

而不是使用后,你将需要使用$ _SESSION

因此,例如:

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或空格。

+0

嗯,我应该提到第三页是使用包含的类,而类是实际需要的变量。但是在课堂上回应会话却什么也不做。任何提示? – UndefinedReference

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> 
1

我明白,我现在可以用我独自一人从通过在one.php的two.php变量...

不这样。形式

成功的表单控件将提交它们的值two.php。然后您可以通过$_POST['name_of_control']访问它们。

如果您生成表单控件(可能类型的隐藏)与PHP变量创建的值(确保逃脱他们抵御XSS攻击),那么他们将出现在形式和提交。

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

这取决于浏览器如何到达three.php。您可以生成另一个表单并将这些值重新放入隐藏的输入中。

+0

谢谢。我打算添加一些关于安全性的内容。 –