HTML form's "action"不会结转我的$_GET数据


HTML form's "action" doesnt carry over my $_GET data

我有一个HTML表单,作为"确认删除"页面,我的"返回"按钮正在播放。

$string = "foo.php?id=" . $_POST['fooid'] . "&id2=" . $_POST['barid'];
<!-- ^^ this ends up being "foo.php?id=1&id2=2" -->

<form action='<?php echo $string; ?>'>
    <input type='submit' value='Back'>
</form>

问题是,当按钮被按下它链接到foo.php没有任何$_GET数据在我的字符串,即使字符串包含"id=1&id2=2"


p。我改变了上面的代码,这样人们可以更好地理解它,这里是原始代码:

<?php
    $string = "xrays.php?id=" . $_POST['visitid'] . "&id2=" . $_POST['patientid'];
?>
<form action='delete.php' method='post'>
    <input type='hidden' name='xrayid' value='<?php $_POST['xrayid']?>'>
    <input type='submit' name='submit' value='Confirm Delete?'>
</form>
<form action='<?php echo $string; ?>'>
    <input type='submit' value='Back'>
</form>

也许这不是最好的答案,但我想这样做:

  $string = "foo.php?id=" . $_POST['fooid'] . "&id2=" . $_POST['barid'];
    <!-- ^^ this ends up being "foo.php?id=1&id2=2" -->

    <form action='foo.php'>
<input type="hidden" name="fooid" value ="<php echo $_POST['fooid']; ?>" />
<input type="hidden" name="barid" value ="<php echo $_POST['barid']; ?>" /> 
        <input type='submit' value='Back'>
    </form>

这应该可以正常工作。

EDIT: change $_GET na $_POST

您需要将get变量放入表单隐藏输入中,如下所示:

<form action='foo.php'>
    <input type="hidden" name="id" value="1" />
    <input type="hidden" name="id2" value="2" />
    <input type='submit' value='Back'>
</form>

或者你可以使用链接:

<a href="foo.php?id=1&id2=2">Back</a>

让我们从一般的表单提交开始。W3C:表单提交

接下来,让我们回顾一下$_GET和$_POST。PHP Manual: $_GET | PHP Manual: $_POST

总之,在<form>标记中,使用method="get"method="post"。根据发送数据的方法,成功的控件只会填充其中一个超全局数组。我相信查询字符串必须来自GET请求url(这可能是默认的),而不仅仅是一个普通的字符串打到action=""属性。我可能是错误的查询字符串,但你有另一个问题。你在一个页面上使用了两个表单。目前,我认为一次只能成功提交一个表单控件。

<form action='delete.php' method='post'>  <!-- FORM 1 -->
    <input type='hidden' name='xrayid' value='<?php $_POST['xrayid']?>'>
    <input type='submit' name='submit' value='Confirm Delete?'>
</form>
<form action='<?php echo $string; ?>'> <!-- FORM 2, add a method="" attribute -->
    <input type='submit' value='Back'>
</form>

在将method="get"添加到表单二后,应该清楚的是,在两个表单方法中不可能出现复合$_POST + $_GET请求,并且您需要从创建单个整体表单开始,而不是创建两个模块化表单。在一个表单中使用<input />标签的type="hidden"属性,就像@machineaddict的回答一样,会有所帮助。然而,真正有帮助的是,如果您显式地使用每个标签的所有正确属性,以便将来可以发现类似的错误。

在这种情况下,知道$_SERVER['QUERY_STRING']元素将保存完整的查询字符串是有帮助的,如果您的web服务器接收到一个。

PHP Manual: $_SERVER
相关文章: