Как запустить PHP-код из fopen / file_get_contents? - PullRequest
0 голосов
/ 19 октября 2018

Я делаю почтовое приложение, которое я использую для отправки счетов, у меня есть шаблон счета электронной почты в формате HTML.

    <?php
include 'dbconfig.php';

$q = intval($_GET['q']);

$sql="SELECT * FROM clients WHERE id = '".$q."'";

$result = mysqli_query($conn,$sql);


while($row = mysqli_fetch_array($result)) {


$to = "name@example.com";
$subject = "Invoice Test " . date('m/d/Y h:i:s a', time());
$invoice = fopen("invoice.html", "r") or die("Unable to open invoice template file");
$message = fread($invoice, filesize("invoice.html"));

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

// More headers
$headers .= 'From: billing@example.com' . "\r\n";
$headers .= 'BCC: billing@example.com' . "\r\n";


mail($to,$subject,$message,$headers);

echo $message;
fclose ($invoice);


}

mysqli_close($conn);

?>

Этот код работает отлично, однако я хочу запустить код PHP в файле шаблона, например <? echo $row[id]; ?>, чтобы заполнить пробелы шаблона данными из вызова MySQL.Как я могу это сделать?fopen не запускает код PHP.Вроде как require_once, но где я могу использовать его в этом приложении.

Если это невозможно, я просто прибегну к включению index-template.php в основной документ, а затем отформатирую этот вторичный документ.на $message = ' <html code> '; - это просто усложняет обновление шаблона.

1 Ответ

0 голосов
/ 19 октября 2018

Самый простой способ сделать это с тем, что у вас есть сейчас, это использовать буферизацию вывода для захвата вывода и затем включить файл вместо его чтения:

// start output buffering
ob_start();

// include your file, which parses the php in it
include 'invoice.html';

// close the output buffer and get its contents
$message = ob_get_clean();
...