【发布时间】:2013-09-14 13:45:45
【问题描述】:
我最近开始学习 PHP,但在联系表单方面遇到了问题。
表单的问题在于它不发送电子邮件,甚至在我发送它之前就在表单下方回显错误消息。 有时我让它工作,然后它又坏了。
另外,我想要消息“消息已发送!”发送时替换整个联系表。如何在不链接到其他页面的情况下实现这一点?
代码如下:
<form method="POST" action="index.php">
<input name="name" type="text" placeholder="Name">
<input name="email" type="email" required placeholder="Email">
<input name="subject" type="text" placeholder="Subject">
<textarea name="message" rows="15" required placeholder="Message"></textarea>
<input name="submit" type="submit" value="Send">
</form>
<?php
if(isset($_POST['submit']))
{
$name_field=$_POST['name'];
$email_field=$_POST['email'];
$subject_field=$_POST['subject'];
$message_field=$_POST['message'];
$to="example@outlook.com";
$from="example@outlook.com";
$subject="Contact Form Message";
$body="Name: $name_field\n Email: $email_field\n Subject: $subject_field\n Message:\n $message_field";
mail($to,$subject,$body,$from);
echo "<p>Message sent!</p>";
}
else
{
echo "<p>An error occured. Please try again.</p>";
}
?>
非常感谢您提供的任何帮助。 另外,如果您有任何想法如何使代码更好、更简洁或更高效,请告诉!
【问题讨论】:
-
你忘了告诉我们到底发生了什么。
-
旁注:您可以使用表单 action="" 而不是硬编码页面名称。
-
是的,很抱歉,我刚刚编辑了问题!
-
这里的代码消息会在不存在时一直出现
$_POST['submit']。当您尝试回显表单时,它会一直存在。你需要像这样if( count($_POST) > 0 ) { if( isset() ) { echo 'send_message'; } else { echo 'error'; } } else { echo 'some_form_code'; }
标签: php forms post message contact