提交后带$ _GET的PHP $ _POST表单

时间:2014-07-02 19:18:55

标签: php html html-form

我使用PHP。

我有一个表单,提交后我希望它转到最后一个带有$ _POST变量的URL(作为$ _GET),如下所示:

http://example.com/page.php?my_key=my_value

问题是" my_value"是在表单中创建的,这意味着在表单发布之前它不知道它。有什么想法吗?

<form method="post" action="/page.php?my_key=">
    <input type="text" value="my_value" name="my_key">
    <input type="submit" name="submitter">
</form>

3 个答案:

答案 0 :(得分:3)

在PHP中发送表单后,您可以简单地将302重定向到您想要的URL。

在PHP文件page.php中(或在前控制器的其他文件中),你可以这么做:

if (isset($_POST['my_key'])) {
    header('Location: http://'.$_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI'].$_POST['my_key'],true,302);
}

答案 1 :(得分:1)

使用Javascript更改action属性。

即。使用jQuery:

jQuery('form').submit(function(eve) {
    var action = eve.target.attr('action');
    action = action + eve.target.find('input[name="my_key"]').val();
    eve.target.attr('action',action);
});

有点粗糙,需要检查并调试。

答案 2 :(得分:1)

您无法通过网址传递POST值: 你能做的就是这样:

<form action="/page.php?my_key=" name="pre" method="POST">
    <input type="hidden" name="my_key" value="my_value">
</form>
<script type="text/javascript">
    setTimeout("document.forms['pre'].submit();",0);
</script>

现在这将作为一个链接,并将自动提交表格作为POST。