我有一个发送电子邮件的脚本。
它通过一个for循环,找到所有订阅者,获取他们的名字并设置一个POST
var及其名称。
接下来,我有一个单独的PHP文件,其中包含电子邮件和内容的标记。
它有一个$_POST['fname']
var,它是用户名,需要动态更新。
问题是我不确定如何抓取我的电子邮件文件(template.php
)的内容并将其添加到电子邮件处理文件(bulk_send.php
)中,以便$ _POST [& #39; fname'] var可以动态更新。这是代码。
foreach ($emailList as &$value) {
$getSubscriber = mysql_query("SELECT * FROM subscribers WHERE email = '$value' ");
while($row = mysql_fetch_assoc($getSubscriber)){
$_POST['fname'] = $row['fname'];
$_POST['lname'] = $row['lname'];
}
//WHERE IM STUCK
$bodyText = ***INCLUDE template.php .....***
//Code that will send out the email with $bodyText as the body of the email
}
我们template.php
的内容很简单 - 我们可以这样说:
<div><?php echo $_POST['fname')." ".$_POST['lname]; ?></div>
如何在上面的Foreach循环中适当地包含template.php文件,以便每次迭代都更新POST变量?
答案 0 :(得分:1)
根据include
在评论中的建议,您无法使用Mr.coder直接设置等于另一个文件内容的变量。
您可以将include
视为复制和粘贴所包含文件的内容。根据您的template.php,就好像您的代码是:
while($row = mysql_fetch_assoc($getSubscriber)){
$_POST['fname'] = $row['fname'];
$_POST['lname'] = $row['lname'];
}
?><div><?php echo $_POST['fname']." ".$_POST['lname']; ?></div><?php
这只是将div内容转储到浏览器,这可能不是你想要的。相反,我建议在您的模板中构建一个函数,该函数将根据输入函数的参数创建所需的消息文本。然后,您可以在页面顶部包含模板,并在需要时调用该函数。它看起来更像是这样:
include('template.php');
foreach ($emailList as &$value) {
$getSubscriber = mysql_query("SELECT * FROM subscribers WHERE email = '$value' ");
while($row = mysql_fetch_assoc($getSubscriber)){
$_POST['fname'] = $row['fname'];
$_POST['lname'] = $row['lname'];
}
//WHERE IM STUCK
$bodyText = makeBodyText($_POST['fname'], $_POST['lname']);
//Code that will send out the email with $bodyText as the body of the email
}
你的template.php看起来像这样:
function makeBodyText($fname, $lname)
{
return '<div>' . $fname .' '. $lname . '</div>';
}
或者,因为包含的文件确实在与调用它的位置相同的范围内运行,并且因为它确实支持返回值的概念(感谢用户@kokx获得该洞察力),所以您可以你的template.php是这样的:
return '<div>' . $_POST['fname'] .' '. $_POST['lname] . '</div>';
然后你可以按如下方式使用它:
$bodyText = include 'template.php';
然而,这显着限制了template.php的灵活性。此外,如果直接调用(从浏览器而不是作为包含),它可能会输出错误信息。所以我不推荐这种方法。