我尝试在将$ _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;在另一端。我不想使用隐藏的输入字段。我怎样才能做到这一点? 谢谢!
答案 0 :(得分:2)
当您发送表单时,$ _POST数据将被重置,并仅假设表单内的输入和可能附加到form action
的可能查询字符串。
实现所需内容的最佳方法是使用隐藏字段,但由于您不想要它,您可以在表单操作中附加查询字符串:
<form method="post" action="catch.php?field1=Value1">
答案 1 :(得分:1)
您没有在任何地方提交field1
。会发生什么:
field1
的任何引用的页面)form
内的元素 换句话说,您需要在表单中获取该值:
<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/>";
}
?>
确保您已开始会话。 注意:您必须像其他用户建议的那样使用隐藏元素或查询字符串。