HTML表单"动作"不会遗留我的$ _GET数据

时间:2014-05-30 11:27:59

标签: php html forms get

我有一个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数据,即使该字符串包含&#34; id = 1&amp; id2 = 2&#34;


P.S我改变了上面的代码,以便人们可以更好地理解它,这是原始代码:

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

3 个答案:

答案 0 :(得分:0)

您需要将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>

答案 1 :(得分:0)

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

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

这应该正常工作。

编辑:更改$ _GET na $ _POST

答案 2 :(得分:0)

让我们从表格提交开始。 W3C: Form Submission

接下来,让我们回顾$ _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"添加到表单2后,应该很清楚在两种表单方法中无法进行复合$_POST + $_GET请求,并且您需要启动制作一个单一的整体形式,而不是两个模块化的形式。使用type="hidden"标记的<input />属性,在一个表单中,如在@ machineaddict的答案中,将有所帮助。但是,如果您明确使用每个标记的所有正确的属性,那么真正有用的是,以便您将来可以发现这样的错误。

在这种情况下,如果您的Web服务器收到完整的查询字符串,那么$_SERVER['QUERY_STRING']元素将保留完整的查询字符串会很有帮助。

PHP Manual: $_SERVER