我上一个用于管理收件人和多个内容的组的应用程序工作送PHP代码的HTML邮件
我想,所以我在一个表中的一些PHP代码保存为使用不同的HTML设计在里面。
但问题是,我没有得到使用这些HTML内容发送邮件时执行的PHP代码。
我使用PHPMailer发送邮件并使用addslashes保存HTML内容并取回stripslashes。
谢谢。
我上一个用于管理收件人和多个内容的组的应用程序工作送PHP代码的HTML邮件
我想,所以我在一个表中的一些PHP代码保存为使用不同的HTML设计在里面。
但问题是,我没有得到使用这些HTML内容发送邮件时执行的PHP代码。
我使用PHPMailer发送邮件并使用addslashes保存HTML内容并取回stripslashes。
谢谢。
使用addslashes保存HTML内容并使用 stripslashes取回。
这很糟糕。我不知道你为什么这样做,但是如果你的意图是逃避查询,请使用mysql_real_escape_string()或数据库驱动程序的analgoue函数(或使用参数化查询)。
如果您的意图是,我不知道,清理HTML?好吧,那没用。因此,无论出于何种原因,都不需要在此添加斜线。
但问题是,我没有得到执行PHP代码时发送 邮件使用这些HTML内容。
因为你的内容是以字符串的形式返回的,所以PHP会像这样读取它,包括标签。
甲最脏溶液,AND强烈建议不要,使用eval()评估PHP代码并将其执行。但是,这是非常危险的,并可能导致严重的安全问题,所以我还没有要告诉你一些例子:)
的最佳解决方案是使用某种模板系统。我不建议使用Smarty的或其它完全成熟的模板引擎,但你可以滚了一个简单的自定义代码分析器,可以沿着这些路线工作:
您使用的占位符保存您的变量,如
{{variable_text}} {{recipient}} {{address}}
或类似的东西。你只需要替换你所需要的东西,所以在你的PHP脚本中,你可以这样做,阅读这个电子邮件:
$change = array('recipient' => 'John Smith',
'address' => 'Unknown Avenue, 666',
'variable_text' => 'We are glad to invite you to');
$text = '<p>To: {{recipient}}.</p>
<p>Address: {{address}}.</p>
Message: Dear{{recipient}}<br />{{variable_text}}';
foreach($change as $k => $v)
{
$text = str_replace('{{'.$k.'}}', $v, $text);
}