将数据添加到$ _POST并提交到另一个页面

时间:2016-02-18 13:01:04

标签: php forms post

我尝试在将$ _POST数据提交到目标网页时向其添加值,如下所示:

post.php中

<?php  $_POST['field1'] = "Value1";?>
<html>
<head>
</head>
<body>
    <form method="post" action="catch.php">
        <input name="field2" type="text"/>
        <input type="submit" value="Submit" />
    </form>
</body>
</html>

catch.php

<?php 
foreach ($_POST as $key => $value) {
    echo $key . " : ". $value;
    echo "<br/>";
}
?>

但我无法抓住&#39; field1&#39;在另一端。我不想使用隐藏的输入字段。我怎样才能做到这一点? 谢谢!

5 个答案:

答案 0 :(得分:2)

当您发送表单时,$ _POST数据将被重置,并仅假设表单内的输入和可能附加到form action的可能查询字符串。

实现所需内容的最佳方法是使用隐藏字段,但由于您不想要它,您可以在表单操作中附加查询字符串:

<form method="post" action="catch.php?field1=Value1">

答案 1 :(得分:1)

您没有在任何地方提交field1。会发生什么:

  • post.php生成一个HTML页面(不包含对field1的任何引用的页面)
  • 用户的浏览器呈现页面
  • 提交时,仅提交form内的元素
  • catch.php接收上面提交的元素。

换句话说,您需要在表单中获取该值:

<form method="post" action="catch.php">
    <input name="field2" type="text"/>
    <input name="field1" type="hidden" value="<?php echo htmlspecialchars($_POST['field1']) ?>"/>
    <input type="submit" value="Submit" />
</form>

如果表单中没有该值,则以其他方式将值输入POST数据。您作为解决方法可以做的是将数据存储在GET(大小限制),会话(并发问题 - 当用户打开两个选项卡,每个选项卡都有不同的会话数据时会发生什么?)或cookie (大小限制和并发问题)。

答案 2 :(得分:0)

你不能这样做。如果您只想通过用户表单发送您尝试添加到POST的数据,您还必须将其存储在客户端(例如隐藏字段或cookie)的某个位置。你现在正在做的是在POST变量中设置一些值,但它会被用户表单发布(或者更确切地说,你在表单发布后使用的$ _POST变量是另一个实例)。

你可以做什么来保持服务器端是将变量中的值保存到用户的会话中,然后在表单post post服务器端再次获取值(假设你正在使用会话)。最后,您可以将它存储在数据库的某个表中,但我不会这样做。

答案 3 :(得分:0)

由于$_POST是post方法发送给脚本的数据,因此您无法直接将其用于其他请求。您需要撰写并发送另一个帖子请求。最简单的方法是使用隐藏的输入字段。

或者您可以选择其他方法来发布http post请求,例如curl方法。

如果您不需要通过post方法提供数据,则可以将其保存在会话中。例如。

答案 4 :(得分:0)

试试这个: 在post.php中

 <?php  $_SESSION['field1'] = "Value1";?>
    <html>
    <head>
    </head>
    <body>
        <form method="post" action="catch.php">
            <input name="field2" type="text"/>
            <input type="submit" value="Submit" />
        </form>
    </body>
    </html>

在catch.php中

    <?php 
if(isset($_SESSION['field1']))
{
$_POST['field1'] = $_SESSION['field1'];
unset($_SESSION['field1']);
}
    foreach ($_POST as $key => $value) {
        echo $key . " : ". $value;
        echo "<br/>";
    }
    ?>

确保您已开始会话。 注意:您必须像其他用户建议的那样使用隐藏元素或查询字符串。