如何重定向到上一页并使用php保持所有填充的输入相同

时间:2016-02-25 05:26:40

标签: javascript php jquery html forms

我正在为我的小项目使用php和javascript。我有一个表单,其中一个页面中有10个或更多输入。我的问题是当用户填写输入字段如textbox和textarea时,如果某些条件失败,则在单击提交按钮后返回同一页面。如何获取所有输入字段的值
例如

<form name="form1" method="post" action="">
  <label for="textfield">Name</label>
  <input type="text" name="textfield" id="textfield"><br/>
  <label for="textfield2">Phone</label>
  <input type="text" name="textfield2" id="textfield2"><br/>
  <label for="textarea">Address</label>
  <textarea name="textarea" id="textarea" cols="45" rows="5"></textarea><br />
  <input type="submit" name="button" id="button" value="Submit">
</form>

我喜欢将它提交到next.php,但如果任何原因条件失败,我会立即将其重定向到具有此表单的同一页面。我喜欢把所有的字段都填满。

3 个答案:

答案 0 :(得分:0)

您不需要为此目的进行会议。您可以使用$ _POST数组,如下所示:

<form name="form1" method="post" action="">
  <label for="textfield">Name</label>
  <input type="text" name="textfield" id="textfield" value="<?php echo isset($_POST['textfield']) ? $_POST['textfield'] : ''; ?>"><br/>
  <label for="textfield2">Phone</label>
  <input type="text" name="textfield2" id="textfield2" value="<?php echo isset($_POST['textfield2']) ? $_POST['textfield2'] : ''; ?>"><br/>
  <label for="textarea">Address</label>
  <textarea name="textarea" id="textarea" cols="45" rows="5"><?php echo isset($_POST['textarea']) ? $_POST['textarea'] : ''; ?></textarea><br />
  <input type="submit" name="button" id="button" value="Submit">
</form>

答案 1 :(得分:0)

您可以使用jquery或ajax进行验证(检查条件)。

您需要在重定向页面到next.php之前检查所有条件 如果所有条件都为真,那么页面将重定向到next.php,否则页面保持不变。

或者

你可以在php中使用session。

<?php
session_start();
?>
<form name="form1" method="post" action="">
  <label for="textfield">Name</label>
  <input type="text" value="<?php echo $_SESSION['textfield_name']; ?>" name="textfield" id="textfield"><br/>
  <label for="textfield2">Phone</label>
  <input type="text" value="<?php echo $_SESSION['textfield_phone']; ?>" name="textfield2" id="textfield2"><br/>
  <label for="textarea">Address</label>
  <textarea name="textarea" id="textarea" cols="45" rows="5"><?php echo $_SESSION['textarea_address']; ?></textarea><br />
  <input type="submit" name="button" id="button" value="Submit">
</form>

在next.php中

<?php
session_start();
$_SESSION['textfield_name'] = $_POST['textfield_name'];
$_SESSION['textfield_phone'] = $_POST['textfield_phone'];
$_SESSION['textarea_address'] = $_POST['textarea_address'];

// Your conditions here...

redirect("prev.php"); // Redirect to form page.
?>

或者

如果您不想使用会话,则可以在URL中传递值。

<form name="form1" method="post" action="">
      <label for="textfield">Name</label>
      <input type="text" value="<?php echo $_GET['textfield_name']; ?>" name="textfield" id="textfield"><br/>
      <label for="textfield2">Phone</label>
      <input type="text" value="<?php echo $_GET['textfield_phone']; ?>" name="textfield2" id="textfield2"><br/>
      <label for="textarea">Address</label>
      <textarea name="textarea" id="textarea" cols="45" rows="5"><?php echo $_GET['textarea_address']; ?></textarea><br />
      <input type="submit" name="button" id="button" value="Submit">
    </form>

在next.php文件中

<?php

    $textfield_name = $_POST['textfield_name'];
    $textfield_phone = $_POST['textfield_phone'];
    $textarea_address = $_POST['textarea_address'];

    // Your conditions here...

    redirect("prev.php?textfield_name=$textfield_name&textfield_phone=$textfield_phone&textarea_address=$textarea_address"); // Redirect to form page.
    ?>

答案 2 :(得分:0)

好吧,其他人已经回答了我推荐的内容,但是如果你对通过$_POST['element'];进行展示感到不舒服,你也可以通过cookie来做到这一点!

When user submits form -> set cookies of data --> if user again visits the same page--> check if cookies settled --> if settled, show , else don't -- > done !!!