簡體   English   中英

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,僅在表單未提交時打印它。

另外,為了進一步閱讀以幫助您,這里還有一些非常不錯的視頻教程,該視頻教程專門用於制作聯系表:-D http://thenewboston.org/watch.php?cat=11&number=100

如果尚未提交表單,您似乎還會回顯錯誤消息,因此,第一次加載時您會收到錯誤消息。 而且您的mail命令看起來不正確。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM