如何在file_get_contents html模板中回显输入数据字段?

时间:2017-08-28 19:35:47

标签: php html email templates encoding

我有这个send_mail.php文件。我正在尝试回显一些插入表单中的字段,但我不能使用echo函数。我做错了什么?

<?php

$date = $_POST['date'];
$full_name = $_POST['full_name'];
$biz_name = $_POST['biz_name'];
$activity = $_POST['activity'];
$afm = $_POST['afm'];
$phone = $_POST['phone'];
$fax = $_POST['fax'];
$mobile = $_POST['mobile'];
$address = $_POST['address'];
$city = $_POST['website'];
$email = $_POST['email'];
$discount = $_POST['discount'];
$payment_amount = $_POST['payment_amount'];
$seller_name = $_POST['seller_name'];


$to = $email;
$subject = "Welcome to our site!";


$htmlContent = file_get_contents("email_template.html");

// Set content-type header for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers = "Content-type: text/html; charset=UTF-8" . "\r\n";

// Send email
if(mail($to,$subject,$htmlContent,$headers)):
    $successMsg = 'Mail sending successful.';
else:
    $errorMsg = 'Oops! Something went wrong.';
endif;
?>

我的email_template.html看起来像这样:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Welcome to our site</title>
<head/>
    <body>
         <h1> Welcome <?php echo $full_name; ?> </h1>
         ...
    </body>
</html>

我是网络开发的新手,所以要温柔! :P

4 个答案:

答案 0 :(得分:1)

使用符号或特殊名称编辑模板并标记变量,而不是替换真实变量: email_template.html:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Welcome to our site</title>
<head/>
    <body>
         <h1> Welcome --full_name-- </h1>
         ...
    </body>
</html>

php:

<?php
$htmlContent = file_get_contents("email_template.html");
$htmlContent = str_replace("--full_name--",$_POST['full_name'],$htmlContent);

答案 1 :(得分:1)

file_get_contents()不会将文件解析为php。所以一种选择是做这样的事情:

ob_start();
include('email_template.html');
$htmlContent = ob_get_contents();
ob_end_clean();

当您使用include()时,它假定您正在运行PHP代码。然后我们使用输出缓冲区来捕获内容。

这样所有变量仍然可用,否则你需要设置一个完整的模板引擎,在这种情况下我会使用像Twig这样的现有变量。

答案 2 :(得分:-1)

两个文件是如何连接的?你在用ajax吗?

看,如果您使用的是ajax,只需返回$full_name,然后使用jquery或javascript打印它。 (我相信你没有这个,但如果你这样做......)

否则,如果你刚发布并重定向到send_mail.php,只需在同一页面上使用echo,就像:

// Send email
if (mail($to,$subject,$htmlContent,$headers)):
     echo = 'Mail sending successful.';
else :
    echo = 'Oops! Something went wrong.';
endif ;

我可以向你推荐的第三种方法是使用$_SESSIONsend_mail.php开始会话时使用:

session_start();
//and declare
$_SESSION["full_name "]= $fullname;

然后,您将为任何页面启用此变量,而此用户位于您的网站上,您只需回应此方式

echo $_SESSION['full_name'];

当你感觉有所改进时,我建议你学习一个php框架,这对你有很大帮助。祝你好运!

答案 3 :(得分:-1)

我刚刚学会了如何像简单的文字一样回答,我的第一个答案是完全“编码”。

好吧,我建议你学习codeigniter,这不是最好的,但这是我认为最简单的,现在最着名的是laravel。

无论如何对初学者来说都不容易,但在开始研究任何框架之前,首先要先了解php和php oo。

See'ya! :)