php包含一个稍后要使用的变量

时间:2014-06-18 17:37:30

标签: php function include

我正在尝试在提交表单时包含整个页面,然后由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语句而不执行它立刻?

谢谢!

1 个答案:

答案 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);
}