PHP联系人表单-表单是否被消息替换?

PHP联系人表单-表单是否被消息替换?,php,forms,post,message,contact,Php,Forms,Post,Message,Contact,我最近开始学习PHP,在使用联系人表单时遇到了问题 表单的问题在于,即使在我发送之前,它也不会发送电子邮件并在表单下方回显错误消息。 有时我让它工作,然后它又坏了 此外,我希望“message sent!”消息在发送时替换整个联系人表单。我如何在不链接到其他页面的情况下实现这一点 代码如下: <form method="POST" action="index.php"> <input name="name" type="text" placeholder="Name"&

我最近开始学习PHP,在使用联系人表单时遇到了问题

表单的问题在于,即使在我发送之前,它也不会发送电子邮件并在表单下方回显错误消息。 有时我让它工作,然后它又坏了

此外,我希望“message sent!”消息在发送时替换整个联系人表单。我如何在不链接到其他页面的情况下实现这一点

代码如下:

<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中,并且仅在表单未提交时打印表单

另外,为了帮助您进一步阅读,这里有一些非常好的视频教程,这是专门关于制作联系人表单的:-D

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

<?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>"; 
  }
} 

您没有说什么不起作用,但是为了在表单已提交时不显示表单,您希望将表单移动到php中,并且仅在表单未提交时打印表单

另外,为了帮助您进一步阅读,这里有一些非常好的视频教程,这是专门关于制作联系人表单的:-D

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

<?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>";
}
}
?>

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

<? 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>";
}
}
?>


您忘了告诉我们实际中断的内容。旁注:您可以使用form action=“”而不是硬编码页面名称。是的,很抱歉,我刚刚编辑了问题!在代码中,当消息不存在时,将始终显示此消息。
$\u POST['submit']
。当你尝试回音表单时,它将一直存在。你需要这样的结构:
if(count($\u POST)>0){if(isset()){echo'send_message';}else{echo'error';}else{echo'some_form_code';}
你忘了告诉我们什么实际坏了。旁注:你可以使用form action=“”而不是硬编码页面名称。是的,很抱歉,我刚刚编辑了这个问题!在代码中,当消息不存在时,将始终显示此消息。
$\u POST['submit']
。当你尝试回音表单时,它将一直存在。你需要像这样的结构
if(count($\u POST)>0){if(isset()){echo'send_message'.}else{echo'error'.}else{echo'some_form_code'.}
谢谢,听起来很聪明!表单的问题是它不发送电子邮件并回显错误消息。如果表单尚未提交,则看起来您是在回显错误消息。。。。因此,您在第一次加载表单时(在单击“提交”之前)会收到表单下方的错误消息?您对邮件功能的使用也不正确,我已编辑了我的代码,以反映您希望将整个代码更改为的内容。到处都有很多这方面的教程。如果你还在挣扎,请带着更具体的问题或错误回来。谢谢,听起来很聪明!表单的问题是它不发送电子邮件并回显错误消息。如果表单尚未提交,则看起来您是在回显错误消息。。。。因此,您在第一次加载表单时(在单击“提交”之前)会收到表单下方的错误消息?您对邮件功能的使用也不正确,我已编辑了我的代码,以反映您希望将整个代码更改为的内容。到处都有很多这方面的教程。如果您仍在挣扎,请返回一个更具体的问题或错误。