我正在尝试在提交表单时包含整个页面,然后由PHPMailer发送。它看起来像这样:
Form1.php:
if (!empty($_POST['email']) {
$variable_email = $_POST['email'];
$body = include (content.php);
Functions::sendEmail($body, $variable_email)
}
<html>
<form action='Form1.php' method=post>
<input name="email"></input>
<button type='submit' />
</form>
</html>
content.php:
$id = $variable_email
// DB Queries to SELECT stuff based on $id
$db_output = 'information'
<html>
<div><?php echo $db_output; ?></div>
</html>
当我提交表单时,它会立即在页面中包含content.php,而不会在电子邮件功能中发送内容。
我尝试按照其他地方的建议去掉ob_start()路线,但是当我输出get_file_contents()时,它输出所有内容,包括php&amp; SQL查询。为了清楚起见,我要发送的内容/电子邮件应该只包含html部分。
我从多个角度看过这个问题,我似乎无法让它发挥作用。我应该以另一种方式接近它吗?理想情况下,我只想将我的整个contents.php文件输出到Function的变量中,如果我在HTML页面上包含相同的文件,它看起来就像它一样,即有没有办法“准备”include语句而不执行它立刻?
谢谢!
答案 0 :(得分:1)
使用ob_start时,您需要ob_get_contents(很可能是ob_get_clean)。 file_get_contents用于打开和读取文件作为文本,可以获得文件的来源。
在Form1.php中:
if (!empty($_POST['email'])) {
$variable_email = $_POST['email'];
ob_start();
include 'content.php';
$body = ob_get_clean();
Functions::sendEmail($body, $variable_email);
}