2016-11-17 265 views
2
<?php 
$errors = ''; 
$myemail = '[email protected]';//<-----Put Your email address here. 
if(empty($_POST['name']) || 
    empty($_POST['email']) || 
    empty($_POST['message'])) 
{ 
    $errors .= "\n Error: all fields are required"; 
} 

$name = $_POST['name']; 
$email_address = $_POST['email']; 
$message = $_POST['message']; 

if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email_address)) 
{ 
    $errors .= "\n Error: Invalid email address"; 
} 

if(empty($errors)) 
{ 
    $to = $myemail; 
    $email_subject = "Contact form submission: $name"; 
    $email_body = "You have received a new message. ". 
    " Here are the details:\n Name: $name \n Email: $email_address \n Message \n $message"; 

    $headers = "From: $myemail\n"; 
    $headers .= "Reply-To: $email_address"; 

    mail($to,$email_subject,$email_body,$headers); 
    //redirect to the 'thank you' page 
    header('Location: contact-form-thank-you.html'); 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <title>Contact form handler</title> 
</head> 

<body> 
<!-- This page is displayed only if there is some error --> 
<?php 
echo nl2br($errors); 
?> 


</body> 
</html> 

這是我的PHP文件,這是我用來發送電子郵件,請檢查此。 以下是HTML代碼。從HTML表格發送電子郵件

我試過在服務器上,它也給我錯誤,「所有的字段都是必需的」 基本上,變量沒有從HTML表單獲取任何數據。

<form action="email.php" method="post" name="contact_form" enctype="text/plain"> 
    <div class="form-group" > 
    <label for="name">Name</label> 
    <input class="form-control" type="text" name="name" id="name" placeholder="Full Name" style="border-radius: 0px; margin-bottom: 3%"> 

    <label for="email">Email address</label> 
    <input type="email" class="form-control" name="email" id="email" aria-describedby="emailHelp" placeholder="Enter email" style="border-radius: 0px; margin-bottom: 3%"> 

    <label for="message">Message</label> 
    <textarea class="form-control" rows="5" name="message" id="message" style="border-radius: 0px; margin-bottom: 3%"></textarea> 

    <button type="submit" class="btn btn-default" style="border-radius: 0px; background-color: midnightblue; box-shadow: 2px 2px 2px #888888; color: white;">Submit</button> 
    </div> 
</form> 
+1

最喜歡無效加密類型?看到這個答案︰http://stackoverflow.com/questions/7628249/method-post-enctype-text-plain-are-not-compatible –

+0

所以而不是文本/明白我應該使用什麼? @AntonyThompson –

+2

Soooooooooo關於這個問題已經在Stackoverflow上做了很多問題,你是否甚至費心尋找? – Xorifelse

回答

0

我從你去除ENCTYPE。還要在同一頁面中編寫腳本。與此代碼嘗試(保存此腳本的index.php):

<?php 
if (isset($_POST['send_email'])) { 
    $errors = ''; 
    $myemail = '[email protected]'; //<-----Put Your email address here. 
    if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message'])) { 
     $errors .= "\n Error: all fields are required"; 
    } 
    $name = $_POST['name']; 
    $email_address = $_POST['email']; 
    $message = $_POST['message']; 
    if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email_address)) { 
     $errors .= "\n Error: Invalid email address"; 
    } 
    if (empty($errors)) { 
     $to = $myemail; 
     $email_subject = "Contact form submission: $name"; 
     $email_body = "You have received a new message. " . 
      " Here are the details:\n Name: $name \n Email: $email_address \n Message \n $message"; 
     $headers = "From: $myemail\n"; 
     $headers .= "Reply-To: $email_address"; 
     if (mail($to, $email_subject, $email_body, $headers)) { 
      echo 'mail sent'; 
     } else { 
      echo 'mail not sent'; 
     } 
    } 
} 
?> 
<form action="index.php" method="post" name="contact_form"> 
<div class="form-group" > 
    <label for="name">Name</label> 
    <input class="form-control" type="text" name="name" id="name" placeholder="Full Name" style="border-radius: 0px; margin-bottom: 3%"> 
    <label for="email">Email address</label> 
    <input type="email" class="form-control" name="email" id="email" aria-describedby="emailHelp" placeholder="Enter email" style="border-radius: 0px; margin-bottom: 3%"> 
    <label for="message">Message</label> 
    <textarea class="form-control" rows="5" name="message" id="message" style="border-radius: 0px; margin-bottom: 3%"></textarea> 
    <button type="submit" name="send_email" class="btn btn-default" style="border-radius: 0px; background-color: midnightblue; box-shadow: 2px 2px 2px #888888; color: white;">Submit</button> 
</div> 

+0

我認爲你的代碼容易受到頭部注入的影響。 –

+0

@RazibAlMamun,是的,我知道我剛剛編輯了Akshat代碼。 –

0

請形式踏歌ENCTYPE刪除= 「text/plain的」