【问题标题】:PHP code in HTML mailHTML 邮件中的 PHP 代码
【发布时间】:2011-10-29 08:24:59
【问题描述】:

我正在开发一个用于管理收件人组和要发送的多个内容的应用程序

我想使用不同的 html 设计,所以我将它保存在一个包含一些 PHP 代码的表格中。

但问题是,当使用这些 HTML 内容发送邮件时,我没有执行 PHP 代码。

我正在使用 PHPMailer 发送邮件并使用 addlashes 保存 HTML 内容并使用 stripslashes 返回。

谢谢。

【问题讨论】:

    标签: php html phpmailer


    【解决方案1】:

    使用 addlashes 保存的 HTML 内容并返回 带斜线。

    这很糟糕。我不知道您为什么这样做,但如果您的意图是逃避查询,请使用 mysql_real_escape_string() 或数据库驱动程序的模拟函数(或使用参数化查询)。
    如果你的意图是,我不知道,清理 html?好吧,那没用。因此,无需出于任何原因在此处添加斜杠。

    但问题是,我在发送时没有执行 PHP 代码 使用这些 HTML 内容发送邮件。

    因为你的内容是作为字符串返回的,所以 PHP 会这样读取它,包括标签。

    一个最肮脏的解决方案,非常不赞成,正在使用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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-04
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      相关资源
      最近更新 更多