我需要一个PHP解决方案来预先填充Form2与以前提交的Form1的数据。
我想要一个滑动的替代方法,可以通过URL传递数据。形式1:
<form id="form1" action="formMailer.php" method="post">
Name: <input type="text" id="userName" name="userName" value="">
Email: <input type="email" id="userEmail" name="userEmail" value="">
<input type="submit" id="submitButton" name="submitButton" value="Submit">
PHP表单邮件:
<?php
$name = $_POST['userName'];
$email = $_POST['userEmail'];
$message =
"\r\nYour Name: " .$name .
"\r\nYour Email: " .$email;
$subject ="Subject of email";
$mailto = "[email protected]";
$separator = md5(uniqid(time()));
$eol = "\r\n";
$headers = "From: ".$name." <".$email.">" . $eol;
$headers .= "MIME-Version: 1.0" . $eol;
$headers .= "Content-Type: multipart/mixed;". $eol. " boundary=\"" . $separator . "\"" . $eol;
$headers .= "This is a MIME encoded message." . $eol . $eol;
$body = "--" . $separator . $eol;
$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol;
$body .= "Content-Transfer-Encoding: 8bit" . $eol . $eol;
$body .= $message . $eol;
mail($mailto, $subject, $body, $headers);
header('location: /formFolder/form2.php');
?>
形式2:
<form id="form2" action="nextAction" method="post">
Name: <input type="text" id="userName" name="userName" value="">
Email: <input type="email" id="userEmail" name="userEmail" value="">
Other Data: <input type="text" id="other_userData" name="other_userData" value="">
<input type="submit" id="submitButton" name="submitButton" value="Submit">
我尝试了一些php“ get”和“ echo”脚本,但是似乎数据在邮件和第二个表单之间丢失了。
使用
header('location: /formFolder/form2.php');
丢失数据。您需要一种方法来持久请求之间的数据。
1。修改formMailer.php
使用会话
<?php
session_start(); // Start the session
$name = $_POST['userName'];
$email = $_POST['userEmail'];
// Store data in session variables
$_SESSION['userName'] = $name;
$_SESSION['userEmail'] = $email;
$message =
"\r\nYour Name: " . $name .
"\r\nYour Email: " . $email;
$subject = "Subject of email";
$mailto = "[email protected]";
$separator = md5(uniqid(time()));
$eol = "\r\n";
$headers = "From: " . $name . " <" . $email . ">" . $eol;
$headers .= "MIME-Version: 1.0" . $eol;
$headers .= "Content-Type: multipart/mixed;" . $eol . " boundary=\"" . $separator . "\"" . $eol;
$headers .= "This is a MIME encoded message." . $eol . $eol;
$body = "--" . $separator . $eol;
$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol;
$body .= "Content-Transfer-Encoding: 8bit" . $eol . $eol;
$body .= $message . $eol;
mail($mailto, $subject, $body, $headers);
header('location: /formFolder/form2.php');
?>
form2.php
使用会话数据检索和填充表单
<?php
session_start(); // Start the session
$userName = isset($_SESSION['userName']) ? $_SESSION['userName'] : '';
$userEmail = isset($_SESSION['userEmail']) ? $_SESSION['userEmail'] : '';
// Optionally, clear the session data after using it if you don't need it later
// unset($_SESSION['userName']);
// unset($_SESSION['userEmail']);
?>
<form id="form2" action="nextAction" method="post">
Name: <input type="text" id="userName" name="userName" value="<?php echo htmlspecialchars($userName); ?>">
Email: <input type="email" id="userEmail" name="userEmail" value="<?php echo htmlspecialchars($userEmail); ?>">
Other Data: <input type="text" id="other_userData" name="other_userData" value="">
<input type="submit" id="submitButton" name="submitButton" value="Submit">
</form>
最重要的考虑因素:
课程依靠cookie或url参数来跟踪用户。确保您的网站配置为安全处理会议。 add add更强大的错误处理您的代码,例如在访问它们之前检查$ _ post变量。 sessions有一个默认的到期时间。您可以在PHP设置中进行配置。提交Form2后,您可以取消设置或破坏会话,因此用户无法重新加载Form2并查看数据。