无法解析存储在MySQL中的PHP变量

梅基·萨拉里亚(Mekey Salaria)

再会,

我的脚本有问题。我正在做的是:

我想向用户发送电子邮件。针对不同类型的邮件有不同的模板,例如一种用于SignUp确认的设计,一种用于近期新闻的设计等。因此,我要做的是,创建了一个表,并将每种设计都存储在名为content的列中,并带有其完整的HTML代码。

为此,我的数据库设计非常简单:

ID    |    type    |    content

1     |   signup   |    <html> ... <body> .. content of email ... </body></html>

因此,就在上面是我的数据库。ID为1的字段现在,当有人注册时,我正尝试向他发送一封电子邮件,该邮件的内容是从上表中获取的。内容字段下的文本如下:

<html>
.
.
<body>
Good Day,

You have successfully created your account.
Please activate your account now by clicking below:

<a href="activate.php?md5=$md5&code=$code">ACTIVATE</a>

</body>
</html>

在上面的代码中,如果签出激活链接,则我使用了PHP变量$ md5和$ code,以为它们的相应值将打印在实际的电子邮件中。但是它们按原样打印,例如$ md5$ code

好吧,我进行了很少的研究,并且从很少的论坛中了解到,

第一个:虽然我们将HTML模板的内容与这些PHP变量一起添加到了数据库中,但它们已成为该数据库列本身的值,不再被视为PHP变量。

第二:一个人声称他已经使用eval()函数使其正常工作我可以使用eval,因为从安全角度来看,即时通讯不是从用户那里获取任何价值,而是从数据库中获取任何价值。我试过了,但还是没有。

下面是我尝试使用eval()的代码:

$md5    =   $row['md5'];  // These variables values I'm expecting to come in template content
$code   =   $row['activ_code'];  // These variables values I'm expecting to come in template content

ob_start();
eval("\$template_content = \"$template_content\";");
$message    =   $template_content;
ob_end_clean();

有人可以帮我这个忙吗?我不想将完整的模板(HTML)放在使用邮件功能的同一页面上。它使代码看起来很丑陋,而不是使其简洁明了。

请帮忙!

弗拉基米尔·哈兰(Vladimir Hraban)

使用str_replace http://php.net/manual/zh/function.str-replace.php并将这些变量替换为标签,例如%MD5%。您仍然可以使用$ code,但是它不是可读性强的,并且可能导致错误的文本被降级(考虑字符串“ this is $ codeveloped”)

混合str_replace(混合$ search,混合$ replace,混合$ subject [,int&$ count])此函数返回一个字符串或一个数组,其中主题中所有出现的搜索都替换为给定的替换值。

然后,

$template_content = '<a href="activate.php?md5=%MD5%&code=%CODE%">ACTIVATE</a>';
$template_content = str_replace("%MD5%", $md5, $template_content);
$template_content = str_replace("%CODE%", $code, $template_content);

str_replace也接受数组作为参数,因此这可能是一个更好的选择

$placeholders = array("%MD5%", "%CODE%");
$values = array($md5, $code);
$template_content = str_replace($placeholders, $values, $template_content);

评估是一个潜在的危险,通常是一个过大的杀伤力

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章