Php 使用$\u POST变量重定向

Php 使用$\u POST变量重定向,php,variables,post,Php,Variables,Post,如何重定向到页面并添加带有某些信息的$\u POST变量 我知道使用$\u GET必须将变量附加到URL,比如&var=foo您不能。你的选择是 a) 将发布的变量附加到重定向url,然后查看$\u GET b) 使用会话变量将数据从一页传送到另一页 最好的方法是使用“Apache RewriteRule”,将POST数据发送到重写的脚本。您可以从$\u POST提取数据,并将其附加到重定向URL: header('Location: http://www.yoursite.com/test.p

如何重定向到页面并添加带有某些信息的$\u POST变量


我知道使用$\u GET必须将变量附加到URL,比如&var=foo

您不能。你的选择是

a) 将发布的变量附加到重定向url,然后查看$\u GET


b) 使用会话变量将数据从一页传送到另一页

最好的方法是使用“Apache RewriteRule”,将POST数据发送到重写的脚本。

您可以从
$\u POST
提取数据,并将其附加到重定向URL:

header('Location: http://www.yoursite.com/test.php?var=' . urlencode($_POST['var']));
如果有更多参数,请参见,以帮助构建查询字符串



但是请注意,这个
test.php
页面将由浏览器使用
GET
方法加载:服务器不能告诉浏览器使用
POST
加载另一个页面,您可以使用表单和一些JavaScript来实现这一点

<?php
.. blah blah blah my stuff

$body = "<html><body onload='connexion.submit()'>";
$body .= "<form name='connexion' action='$connectURL' method='post'>";
$body .= "<input type='hidden' name='username' value='$dataLogin'>";
$body .= "<input type='hidden' name='password' value='$dataPassword'>";
$body .= "<input type='submit' value='OK' />";
$body .= "</form>";
$body .= "</body></html>";
?>
下面是一个例子:

<form action="/path/to/redirect/to" id="example-id">
    <?php foreach ($_POST as $key => $value): ?>
    <input type="hidden" name="<?php echo $key ?>" value="<?php echo $value ?>" />
    <?php endforeach ?>
</form>

<script type="text/javascript">
    $(document).ready(function() {
        $("#example-id").submit();
    });
</script>


然后您的POST参数将通过$\u会话可用。

我使用
POST
表单和JavaScript自动验证解决了同样的问题

<?php
.. blah blah blah my stuff

$body = "<html><body onload='connexion.submit()'>";
$body .= "<form name='connexion' action='$connectURL' method='post'>";
$body .= "<input type='hidden' name='username' value='$dataLogin'>";
$body .= "<input type='hidden' name='password' value='$dataPassword'>";
$body .= "<input type='submit' value='OK' />";
$body .= "</form>";
$body .= "</body></html>";
?>

但是,这对文件字段不起作用,并且由于浏览器和服务器的限制,URL不应超过2-4K。如果处理大量数据或文件数据,在会话中存储内容可能是更好的选择;请记住,会话在打开到同一网站的所有选项卡之间共享,因此请确保将其考虑在内。