HTML表单不会将数据传递给PHP脚本
问题描述:
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文件。
谢谢!
答
问题在于你传递给邮件功能的问题。将$ file_contents存储在$ html中之后,您所做的替换被存储在$ email_message中,但您仍将$ html传递给该邮件。
将其更改为
mail($mastermail, "письмо из Сакуры", $email_message, $headers);
您正在使用您的''邮件$ html'()'调用,而不是'$ email_message'(你做了所有的更换)。 – ccKep
@ccKep,但我做了$ html = file_get_contents(“./ email-inlined.html”); 意味着现在$ html存储我想要发送的文件中的数据,我正确吗? –
'$ 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