好的,我有一个联系表格:
<?php
if (isset($_POST['subtest'])) {
$to = 'thomofawsome@gmail.com';
$name = $_POST['firstname'];
$lastName = $_POST['lastname'];
$email = $_POST['email'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip = $_POST['zip'];
$comments = $_POST['comments'];
$Message = <<< STOP
From: $name $lastName
Email: $email
In: $city, $state, $zip
Comments: $comments
STOP;
$subject = "Contact Request";
$headers = 'From: system';
if (mail($to, $subject, $Message, $headers)) {
echo '<div id="thanks">Mail sent</div>';
exit();
}
else {
echo 'Mail Failed';
}
}
?>
<form name="contact_form" action="" method="post">
<input type="hidden" name="subtest" value="true">
First Name:<br>
<input type="text" name="firstname">
<br>
Last Name:<br>
<input type="text" name="lastname">
<br>
Email Address:<br>
<input type="text" name="email">
<br>
City:<br>
<input type="text" name="city">
<br>
State:<br>
<input type="text" name="state">
<br>
Zip:<br>
<input type="text" name="zip">
<br>
Comments:<br>
<textarea name="comments"></textarea>
<br>
<input id="submit" type="submit" name="submit" value="Send">
<br>
</form>
问题是我希望echo mail sent
格式正确(绿色,在页面上正确定位等)。如你所见,我把它放在了div中。当我提交表单时,我被重定向回到表单页面,除了整个表单和页脚消失,邮件发送显示在页面底部(格式正确)。
有什么想法吗?
答案 0 :(得分:0)
exit()
函数阻止脚本的其余部分执行,包括表单和页脚。删除它,它会工作。
if (mail($to, $subject, $Message, $headers)) {
echo '<div id="thanks">Mail sent</div>';
} else {
echo 'Mail Failed';
}
正如Raidenance指出的那样,如果有人在发布表单后刷新此页面,它将重新发送电子邮件地址。解决此问题的更好方法是将您的联系表单发布到另一个URL(例如/contact/submit
),并在该URL处完成脚本执行后,只需使用参数重定向回联系表单
header("Location:/contact?success=true");
然后在您的联系表单页面上:
if (isset($_GET['success']) && $_GET['success'] == "true") {
echo '<div id="thanks">Mail sent</div>';
} else {
echo 'Mail Failed';
}
这将防止用户多次重新加载和接收电子邮件的问题。