2017-09-14 43 views
1

HTML标记形式:HTML表单不会将数据传递给PHP脚本

<form method="post" action="send_form_email.php"> 
         <div class="form-group"> 
          <label>Name: </label> 
          <input class="form-control" type="text" placeholder="Enter Name" name="name"> 
         </div> 
         <div class="form-group"> 
          <label>Email: </label> 
          <input class="form-control" type="text" placeholder="Enter Email" name="email"> 
         </div> 
         <div class="form-group"> 
          <label>Message: </label> 
          <textarea class="form-control" placeholder="Enter Message" name="message"></textarea> 
         </div> 
         <button type="submit" name="sended" class="btn btn-default">Submit</button> 
        </form> 

php文件如下所示,包括2个数组,使变量之间的SWOP:和邮件

<?php 
    if(!isset($_POST['sended'])) { 
     died("Йуху"); 
    } 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $mastermail="[email protected]"; 
    $html = file_get_contents("./email-inlined.html"); 
// Массивы с заменой 
    $search = array("#name#", "#email#", "#message#"); 
    $replace = array($name, $email, $message); 
    $email_message = str_replace($search, $replace, $html); 
// create email headers 
    $headers = 'From: '.$masteremail."\r\n". 
    'Reply-To:'.$masteremail."\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 
    $headers .= 'MIME-Version: 1.0'."\r\n"; 
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; 
    mail($mastermail, "письмо из Сакуры", $html, $headers); 
    ?> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <h1>Thanks!</h1> 

本身需要进入收件人:

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width"> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Письмо с сайта</title> 
</head> 

<body> 
    <div> 
     <p>letter comes from <span>#name#</span></p> 
     <p>email to reply <span>#email#</span></p> 
     <p>message itself:<br><span>#message#</span></p> 
    </div> 
</body> 
</html> 

问题是片段不会随着来自第电子表格。意味着html数据不会传输到php文件。

谢谢!

+1

您正在使用您的''邮件$ html'()'调用,而不是'$ email_message'(你做了所有的更换)。 – ccKep

+0

@ccKep,但我做了$ html = file_get_contents(“./ email-inlined.html”); 意味着现在$ html存储我想要发送的文件中的数据,我正确吗? –

+1

'$ html = file_get_contents(“./ email-inlined.html”);'表示“获取该文件的内容并将其存储在$ html中”。之后,你正在对你的'str_replace'进行处理,并将结果存储在'$ email_message'中,因此:'$ email_message'是你的电子邮件的内容,替换了占位符,'$ html'是原来的。当你发送电子邮件时,你想发送带有被替换的课程价值的电子邮件,因此'$ email_message'而不是'$ html'。更改'mail($ mastermail,“письмоизСакуры”,$ html,$ headers);'to'($ mastermail,“письмоизСакуры”,$ email_message,$ headers);'。 – ccKep

回答

1

问题在于你传递给邮件功能的问题。将$ file_contents存储在$ html中之后,您所做的替换被存储在$ email_message中,但您仍将$ html传递给该邮件。

将其更改为

mail($mastermail, "письмо из Сакуры", $email_message, $headers);