Php 重定向回并保留以前输入的值

Php 重定向回并保留以前输入的值,php,Php,我想重定向回表单并保留以前输入的值,有什么想法吗?您在表单中使用哪种方法获取 PHP不能直接重定向回、生成表单、输入带有名称和值的隐藏输入字段,而不仅仅是: document.nameOfForm.submit(); 您必须使用seesions来执行此操作,因此在process.php文件中: session_start(); //assign all posted values to a session if (!empty($_POST)) { fo

我想重定向回表单并保留以前输入的值,有什么想法吗?

您在表单中使用哪种方法获取

PHP不能直接重定向回、生成表单、输入带有名称和值的隐藏输入字段,而不仅仅是:

document.nameOfForm.submit();

您必须使用seesions来执行此操作,因此在process.php文件中:

    session_start();
    //assign all posted values to a session
    if (!empty($_POST)) {
        foreach($_POST as $key => $value) {
            $_SESSION['your_form'][$key] = $value;
        }
    }
    header('Location: your_form.php');
现在在您的_form.php中:

    <?php
    session_start();
    if (isset($_SESSION['your_form']) && !empty($_SESSION['your_form'])) {
        $form_data = $_SESSION['your_form'];
        unset($_SESSION['your_form']);
    }
    ?>
    <form method="POST" action="process.php">
        <input type="text" name="txt1" value="<?=$form_data['your_form']['txt1']?>" />
        <input type="text" name="txt2" value="<?=$form_data['your_form']['txt2']?>" />
        <input type="submit" name="Submit Form" />
    </form>


document.thisForm.submit();
在Manolis answer中,您将所需数据存储在会话中,工作正常,但在将数据插入表单后取消设置数据。 在这里,您可以生成一个新表单,填写输入隐藏的输入字段,然后通过POST方法提交到您的页面。 在您的页面上,尝试以下操作:

<?php
if (isset($_POST['redirected'])) {
?>
  <input name="key1" value="<?php echo $_POST['key1']; ?>" >
  <input name="key2" value="<?php echo $_POST['key2']; ?>" >
  <button>Submit</button>
<?php
}
?>


您是否使用Zend Framework之类的库来生成表单?这将使它变得容易得多。否则,无论您是在重定向的查询字符串中传递表单值,还是将其存储为会话变量或其他任何内容,您都需要在表单页面上手动检查表单值,并手动填充每个输入。@LinusR否,我没有使用Zend Framework。+1,您能提供更多详细信息吗?我应该使用start\u seetions()在上面的代码中?当然,对不起,我忘了。编辑:已修复。谢谢,我根据您的帖子更改了代码,但仍然无法保留以前输入的内容。如果删除unset(),则每次打开页面时都会填写一份表单,直到会话结束。很抱歉,我以前犯了一个错误,已修复。
<?php
if (isset($_POST['redirected'])) {
?>
  <input name="key1" value="<?php echo $_POST['key1']; ?>" >
  <input name="key2" value="<?php echo $_POST['key2']; ?>" >
  <button>Submit</button>
<?php
}
?>
<input name="key" value="<?php if (isset($_POST['redirected')) { echo $_POST['key']; } ?>" >