PHP重定向,保留帖子

PHP重定向,保留帖子,php,Php,我有一个带有复选框表单的html页面。表单的操作指向一个PHP脚本。PHP脚本可以很好地收集POST变量,但显然会显示一个空白屏幕,因为一旦执行,它就会转到www.example/script.PHP 我如何让PHP转到另一个URL以获取更多表单提交信息,同时保持这些帖子的完整性 header()和metaredirect似乎否决了一切,并没有收集数据。。。如何将这些数据收集到帖子中,然后自动转到另一个表单的html页面,并附加一个PHP脚本作为其操作 如果我用一种令人困惑的方式来表达这一点,我

我有一个带有复选框表单的html页面。表单的操作指向一个PHP脚本。PHP脚本可以很好地收集POST变量,但显然会显示一个空白屏幕,因为一旦执行,它就会转到www.example/script.PHP

我如何让PHP转到另一个URL以获取更多表单提交信息,同时保持这些帖子的完整性

header()
和metaredirect似乎否决了一切,并没有收集数据。。。如何将这些数据收集到帖子中,然后自动转到另一个表单的html页面,并附加一个PHP脚本作为其操作


如果我用一种令人困惑的方式来表达这一点,我将表示感谢和抱歉

您可以将
$\u POST
变量存储在
$\u SESSION
中,然后在表单的最后一部分完成时提交,也可以让中间页面将这些值存储为隐藏输入,然后提交到最后一页。

我发现此代码几乎一直都有效(除非在某些情况下,您希望使用自定义post数据转发,而客户端不支持javascript)

这是通过滥用
307临时重定向
来实现的,该重定向似乎是转发
POST
数据,或者通过创建一个自提交的javascript表单来实现的

这是一种黑客攻击,仅当您必须转发帖子数据时才使用。

<?php

function redirectNowWithPost( $url, array $post_array = NULL )
{
    if( is_null( $post_array ) ) { //we want to forward our $_POST fields
        header( "Location: $url", TRUE, 307 );
    } elseif( ! $post_array ) { //we don't have any fields to forward
        header( "Location: $url", TRUE );
    } else { //we have some to forward let's fake a custom post w/ javascript
        ?>
<form action="<?php echo htmlspecialchars( $url ); ?>" method="post">
<script type="text/javascript">
//this is a hack so that the submit function doesn't get overridden by a field called "submit"
document.forms[0].___submit___ = document.forms[0].submit;
</script>
<?php print createHiddenFields( $post_array ); ?>
</form>
<script type="text/javascript">
document.forms[0].___submit___();
</script>
        <?php
    }
    exit();
}

function createHiddenFields( $value, $name = NULL )
{
    $output = "";
    if( is_array( $value ) ) {
        foreach( $value as $key => $value ) {
            $output .= createHiddenFields( $value, is_null( $name ) ? $key : $name."[$key]" );
        }
    } else {
        $output .= sprintf("<input type=\"hidden\" name=\"%s\" value=\"%s\" />",
            htmlspecialchars( stripslashes( $name ) ),
            htmlspecialchars( stripslashes( $value ) )
        );
    }
    return $output;
}

POST
数据放入会话变量中。我只写
echo“…”
,但我很好奇是否有更好的方法。我知道你在说什么,我可以尝试进行会话…但是,一旦script.php执行,我如何进入另一个页面?它只显示一个空白页面…如何让它进入另一个html页面,以便用户可以填写更多表单?谢谢!为什么不直接显示表单的下一部分如果你真的想重定向用户,发布一个
标题('Location:www.mysite.com/nextpage.php');
我可以做“下一步”吗将按钮链接提交到下一个表单页面,并以某种方式将所有表单信息放到帖子中?这需要我在同一个html页面上使用php,还是我仍然可以将其保存在自己的文件中?此外,我愿意使用DHTML和ajax来实现这一点。还有,框架