将POST数据传递给两个PHP文件

3

你好,我希望这个问题很容易解决。

简单地说,我想要实现以下功能:

1) 用户填写数据(estimate.html),并提交到 validate.php 进行验证。

2) 从 validate.php 此页面检查 POST 数据是否正确,如果确认无误,用户点击提交按钮,然后同样的 POST 数据发送到 submission.php

有没有一种简单的方法可以在两个 PHP 文件之间传递完全相同的 POST 数据呢?(最好不使用会话)

estimate.html -> validate.php -> submission.php

现有情况:

我有一个表单,可以向validate.php传递未知数量的字段。

我已经验证了发送到validate.php的所有POST数据中的所有条目。如果所有数据都成功验证,那么是否可以只重新发送已发送到validate.php的POST,而不是将所有数据插入隐藏字段并重新提交数据到submission.php?


你的validate.php文件有什么其他表单吗?你可以始终输出数据,然后再将该数据提交,或者当然也可以使用会话。另外,你的submission与validate有何不同之处?如果可能的话,应该在一个文件中实现这两个功能。 - Dinesh
您可以成功地使用Session来完成此操作。您只需要将帖子数据保存到一个Session变量中,然后重定向到submission.php即可。 - Licson
1
我认为ajax是最好的选择,在validate.php请求完成时使用回调函数。 - Shijin TR
会话是更好的选择。 - Starx
validate.php允许用户查看他们的项目,并且它也允许我在有任何不正确的地方时向他们发出警报。在validate和提交页面上都没有表单。Validate用于查看,提交用于将数据实际插入数据库中。 - user2360813
使用PHP验证数据会强制您每次想要验证时重新加载页面。我建议您使用Ajax进行验证。 - LuckyStarr
3个回答

1

是的!只使用会话或隐藏字段。我猜..

您还可以在隐藏中使用数组来减少元素的大小。

<input type="hidden" value="array('username'=>'user','password'=>'password');">

这样的东西。


0

当在validate.php中接收到帖子数据时,您可以将其移动到会话超全局变量中。

$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];

这将使该变量在客户端的任何后续 PHP 页面运行期间可用,直到取消设置。

或者,您可以在包含提交按钮的表单中使用隐藏输入。

<input type="hidden" name="username" value="<?php echo $_POST['username']; ?>">
<input type="hidden" name="password" value="<?php echo $_POST['password']; ?>">
<input type="button" ... >
etc

这取决于您希望在哪个范围内使用这些数据。

您还可以将确认页面构建到最终页面中,在该页面上,您只需重新提交到相同的页面,并断言一个额外的确认后变量,您可以检查并在其存在时继续进行。


0

我看到两种确保提交到 submission.php 的数据与提交到 validate.php 的数据相同的方法:

  1. 您可以使用PHP从validate.phpsubmission.php提交数据:

    $data = file_get_contents('php://input');
    
    $options = array('http' =>
        array(
            'method'  => 'POST',
            'content' => $data,
        )
    );
    
    $context = stream_context_create($options);
    $result = file_get_contents('submission.php', false, $context);
    
  2. 您可以将POST的数据的哈希值返回给客户端,该哈希值将附加到对submission.php的POST请求中。哈希应包含已发布的数据和由validate.phpsubmission.php共享的秘密密钥。然后,后者应重新计算输入数据的哈希值以检查数据是否经过验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接