如何在2个表单提交后将变量保存在php中



我的php代码有问题。我有两个html表单,在用户提交每个表单后,我需要在输入中显示输入数据。我有一个问题,用户提交表单1时,数据会正确显示在表单中,但当用户提交表单2时,表单1中的数据会被删除,我希望两个表单都显示输入数据。下面是用于演示的简化代码。

<?php
$name1 = "";
$email1 = "";
$name2 = "";
$email2 = "";
?>
<?php
if (isset($_POST['submit1'])) {
$name1 = $_POST['name1'];
$email1 = $_POST['email1'];
}
if (isset($_POST['submit2'])) {
$name2 = $_POST['name2'];
$email2 = $_POST['email2'];
}
?>
<form action="index.php" method="post">
Name: <input type="text" name="name1" value="<?php echo $name1; ?>"><br>
E-mail: <input type="text" name="email1" value="<?php echo $email1; ?>"><br>
<input type="submit" value="send" name="submit1">
</form>
<form action="index.php" method="post">
Name: <input type="text" name="name2" value="<?php echo $name2; ?>"><br>
E-mail: <input type="text" name="email2" value="<?php echo $email2; ?>"><br>
<input type="submit" value="send" name="submit2">
</form>

您可以使用PHP会话。当页面上的表单提交时,您可以将$_POST变量存储在$_SESSION中,然后只存储要填写表单的$_SESSION.请参阅下面的代码:

<?php
session_start(); //start the session
if(isset($_POST)){ //check to see if a form has been submitted
// merge the $_SESSION & $_POST arrays, 
// this will overwrite session variables with new post variables but keep old post variables that haven't been submitted
$_SESSION = array_merge($_SESSION,$_POST); 
}

$name1 = "";
$email1 = "";
$name2 = "";
$email2 = "";
?>
<?php
if (isset($_SESSION['submit1'])) { //uses $_SESSION instead of $_POST
$name1 = $_SESSION['name1'];
$email1 = $_SESSION['email1'];
}
if (isset($_SESSION['submit2'])) { //uses $_SESSION instead of $_POST
$name2 = $_SESSION['name2'];
$email2 = $_SESSION['email2'];
}
?>
<form action="index.php" method="post">
Name: <input type="text" name="name1" value="<?php echo $name1; ?>"><br>
E-mail: <input type="text" name="email1" value="<?php echo $email1; ?>"><br>
<input type="submit" value="send" name="submit1">
</form>
<form action="index.php" method="post">
Name: <input type="text" name="name2" value="<?php echo $name2; ?>"><br>
E-mail: <input type="text" name="email2" value="<?php echo $email2; ?>"><br>
<input type="submit" value="send" name="submit2">
</form>

如果你有任何问题,请告诉我。

每个到服务器的请求都将独立运行
,因此您需要以某种方式存储第一个表单中的数据,直到用户发送第二个表单

  1. Easyst-将输入数据呈现为第二表单中的隐藏字段。类似于:
<input type="hidden"  name="name1" value="<?php echo $_POST['name1']; ?>">

2。在数据库或cookie中存储表单提交之间的数据

最新更新