2016-11-17 229 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的”