1

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

4

3 回答 3

2

你必须使用 seeions 来做到这一点,所以在你的 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');

现在在 your_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>
于 2012-09-22T15:06:05.187 回答
1
<form method='POST' action='back_to_your_form.php' name='thisForm'>

<?php foreach ($_POST as $key => $value) { ?>

  <input name='<?php echo $key; ?>' value='<?php echo $value; ?>' type='hidden'>

<?php } ?>

  <input name='redirected' type='hidden'>
</form>

<script language='javascript'>
  document.thisForm.submit();
</script>

在 Manolis 答案中,您将所需的数据存储在会话中,工作正常,但在将数据插入表单后取消设置。在这里,您生成一个新表单,填写输入隐藏输入字段,然后通过 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
}
?>

在这里,您将值填回表单中,如果您返回此页面,您可以通过检查是否设置了 $_POST['redirected'] 来获取此信息。您可以将此检查设为全局,就像我在此处或在每个输入字段上所做的那样。

<input name="key" value="<?php if (isset($_POST['redirected')) { echo $_POST['key']; } ?>" >
于 2012-09-22T15:19:56.373 回答
0

您在表单中使用哪种方法 GET 或

PHP 不能只是重定向回来,生成一个表单,输入带有名称和值的隐藏输入字段,然后:

document.nameOfForm.submit();
于 2012-09-22T14:57:18.113 回答