mysql/php-在数据库中存储html模板

mysql/php-在数据库中存储html模板,php,mysql,html,templates,eval,Php,Mysql,Html,Templates,Eval,我想知道在数据库中存储html模板的最佳方法,在那里我可以检索它们并插入变量 显然,我可以将它们存储为php,然后“评估”记录。。。。但我听说那是邪恶的 有更好的办法吗?:) 编辑: 对不起,我不清楚。。。我试图通过说html模板来简化它。。。我真正的意思是小的可嵌入html元素(想想youtube)。。。而不是整个站点。无需重新发明轮子,您可以使用引擎并将模板本身存储在数据库中。就我个人而言,我喜欢将模板存储在文件系统中,因为它使维护变得更加简单,但这是您的项目:)标记,您需要将模板存储在数据

我想知道在数据库中存储html模板的最佳方法,在那里我可以检索它们并插入变量

显然,我可以将它们存储为php,然后“评估”记录。。。。但我听说那是邪恶的

有更好的办法吗?:)

编辑:


对不起,我不清楚。。。我试图通过说html模板来简化它。。。我真正的意思是小的可嵌入html元素(想想youtube)。。。而不是整个站点。

无需重新发明轮子,您可以使用引擎并将模板本身存储在数据库中。就我个人而言,我喜欢将模板存储在文件系统中,因为它使维护变得更加简单,但这是您的项目:)

标记,您需要将模板存储在数据库中吗?这将在每次请求这些模板时给DB服务器增加沉重负担,除非缓存它们

将此与具有内置缓存以简化文件读取的文件系统进行比较


另外,使用eval()不会产生潜在的安全漏洞。

我还建议不要将HTML存储在数据库中。将它们作为模板存储在文件系统中,并在需要时包含或解析它们,会方便得多。我还建议使用Smarty之类的工具。这是一个非常方便的工具

但是,如果您更愿意手动执行,我会这样做

首先,我将把模板存储在文件系统上的一个文件中。如果您更愿意使用数据库,可以这样做。只需知道,数据库在用于此类内容时通常会导致更大的开销

例如,对于YouTube视频:

<object width="{$width}" height="{$height}">
    <param name="movie" value="http://www.youtube.com/{$path}"></param>
    <param name="allowFullScreen" value="true"></param>
    <param name="allowscriptaccess" value="always"></param>
    <embed src="http://www.youtube.com/{$path}"
           type="application/x-shockwave-flash"
           allowscriptaccess="always"
           allowfullscreen="true"
           width="{$width}" height="{$width}">
    </embed>
</object>
就这样


当然,您可以像占位符一样使用
,只需
包含
模板,但这会使您面临注入攻击的风险。这是比较安全的路线。

我决定走这条路线。。。你和scrumpy jack是对的。。。文件系统是使用模板的方式。我看不出,获取数据库数据并直接用echo插入它比stru替换数据库中的数据更不安全。。。我在存储数据之前验证数据。。。它都是字母数字或数字的,所以在插入之前进行足够简单的验证应该会使它足够安全,对吧?当然,如果您在包含它之前验证了所有内容,那么它应该是相当安全的。如果模板名称是动态的,请记住将其验证为;]
<?php
$template_path = 'templates/youtube_vid.tpl';
$template_data = file_get_contents($template_path);

$old = array('{$width}', '{$height}', '{$path}');
$new = array(425, 344, 'v/zuZB2O6orV0&hl=en_US&fs=1&');

echo str_replace($old, $new, $template_data);
?>