PHP 联系表单 - 表单被消息替换


PHP Contact Form - form getting replaced by a message?

我最近开始学习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>";
    }
?>

非常感谢您的任何帮助。另外,如果您知道如何使代码更好,更干净或更高效,请告诉!

你还没有说什么不起作用,但是如果表单已提交,则不显示表单,您希望将表单移动到php中,并且仅在表单尚未提交时才打印。

另外,为了进一步阅读以帮助您,这里有非常好的视频教程,这个教程专门用于制作联系表格:-Dhttp://thenewboston.org/watch.php?cat=11&number=100

如果表单尚未提交,您似乎也会回显错误消息,因此第一次加载时会出现错误。而且您的邮件命令看起来不正确。

<?php
//if the form hasn't been submitted yet, print the form.
if (!isset($_POST['submit'])){
print <<<END
<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>
END;
}
//if the form has been submitted.
if(isset($_POST['submit'])) 
{
$name_field=$_POST['name'];
$email_field=$_POST['email'];
$subject_field=$_POST['subject'];
$message_field=$_POST['message'];
$to="example@outlook.com";
$subject="Contact Form Message";
$body="Name: $name_field'n Email: $email_field'n Subject: $subject_field'n Message:'n $message_field";
$headers = "From: example@outlook.com";
  if(!mail($to,$subject,$body,$headers)){
      echo 'failed !!';
  }
  else{
      echo "<p>Message sent!</p>"; 
  }
} 

试试这个,希望这对你有用:

<? if (!isset($_POST['submit']))
{?>
<form method="POST" action="test.php">
<input name="name" type="text" placeholder="Name">
<input name="email" type="email" required placeholder="Email">
<input name="password" type="password" required placeholder="Password">
<textarea name="message" rows="15" required placeholder="Message"></textarea>
<input name="submit" type="submit" value="Send">
</form>
<?
}
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);
if($body)
echo "<p>Message sent!</p>"; 
if(!$body) 
{
echo "<p>An error occured. Please try again.</p>";
}
}
?>