PHP:成功提交后清除表单条目
我有一个简单的一页的联系表,逻辑如下PHP:成功提交后清除表单条目,php,forms,Php,Forms,我有一个简单的一页的联系表,逻辑如下 如果用户点击发送按钮并出现错误,则显示错误并保留表单值 如果用户点击发送按钮,一切正常,则显示成功消息并清除表单值 这是完整的代码。我使用的是$\u POST=array()尝试清除值,但似乎不起作用 <form id="contact_form" method="POST"> Name<br/><input type="text" name="name" value="<?php echo isset($_
- 如果用户点击发送按钮并出现错误,则显示错误并保留表单值
- 如果用户点击发送按钮,一切正常,则显示成功消息并清除表单值
$\u POST=array()
尝试清除值,但似乎不起作用
<form id="contact_form" method="POST">
Name<br/><input type="text" name="name" value="<?php echo isset($_POST["name"]) ? $_POST["name"] : ''; ?>" required><br/>
Email<br/><input type="text" name="email" value="<?php echo isset($_POST["email"]) ? $_POST["email"] : ''; ?>" required><br/>
...
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
...
if (mail($recipient, $subject, $message, $headers) == TRUE) {
$_POST = array();
echo "Your msg has been sent.";
}
else {
echo "An error occurred while trying to send your message.";
}
}
?>
名称
非常感谢您的帮助。事实上,在检查post数据是否正确之前,您正在使用post数据,因此每次都会显示数据。您可以将php代码放在表单之前,并设置一个标志(如果成功),然后在输入值属性中不打印任何内容
<?php
$success = false;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
...
if (mail($recipient, $subject, $message, $headers) == TRUE) {
$success = true;
echo "Your msg has been sent.";
}
else {
echo "An error occurred while trying to send your message.";
}
}
?>
<form id="contact_form" method="POST">
Name<br/><input type="text" name="name" value="<?php echo (!$success) ? $_POST["name"] : ""; ?>" required><br/>
Email<br/><input type="text" name="email" value="<?php echo isset($_POST["email"]) && (!$success) ? $_POST["email"] : ''; ?>" required><br/>
...
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>
Name
实际上,在检查post数据是否正确之前,您正在使用post数据,因此每次都会显示数据。您可以将php代码放在表单之前,并设置一个标志(如果成功),然后在输入值属性中不打印任何内容
<?php
$success = false;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
...
if (mail($recipient, $subject, $message, $headers) == TRUE) {
$success = true;
echo "Your msg has been sent.";
}
else {
echo "An error occurred while trying to send your message.";
}
}
?>
<form id="contact_form" method="POST">
Name<br/><input type="text" name="name" value="<?php echo (!$success) ? $_POST["name"] : ""; ?>" required><br/>
Email<br/><input type="text" name="email" value="<?php echo isset($_POST["email"]) && (!$success) ? $_POST["email"] : ''; ?>" required><br/>
...
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>
Name
我正在使用$\u POST=array();。。。不应明确更改服务器变量。。但是,不清楚您试图询问的是什么如果电子邮件发送成功,请清除表单。这将阻止显示“成功”消息。将$\u POST分配给另一个变量,然后检查它。。。如果已发送,请不要为此使用会话。。。他为什么要这么做@M.AlimI正在使用$_POST=array();。。。不应明确更改服务器变量。。但是,不清楚您试图询问的是什么如果电子邮件发送成功,请清除表单。这将阻止显示“成功”消息。将$\u POST分配给另一个变量,然后检查它。。。如果已发送,请不要为此使用会话。。。他为什么要这么做@阿利姆