MySQL的/ PHP的 - 在一个数据库中储存的HTML模板
题
我想知道存储HTML模板在我能够找回它们并插入变量数据库的最佳方式。
很显然,我可以将它们保存为PHP,然后“EVAL”记录....但我听说这是邪恶的。
是有更好的方法? :)
编辑:
对不起,我不清楚......我试着说HTML模板......我真正的意思是小嵌入,能HTML元素(认为YouTube的)......而不是整个网站简化它。
解决方案
我也要对存储在数据库内的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>
然后我只想str_replace
的PHP变量在那里,就像PHP本身并用绳子。
<?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);
?>
和这将是它。
您当然可以使用<?php $width; ?>
样占位符,只是include
模板,而是让你在为注入攻击的风险。这是更安全的路线。
其他提示
标记,你需要存储模板数据库?这会在每次请求这些模板时添加了沉重的负担,你的数据库服务器,除非你缓存。
比较这对其中具有内置的高速缓存,以简化文件中读取文件系统。
另外,你会不会有潜在的安全漏洞可能来自使用eval()。
没有必要重新发明轮子,你可以使用模板引擎和存储他们自己的模板数据库。我个人比较喜欢的模板存储在文件系统,因为它使事情多易于维护,但其项目:)
不隶属于 StackOverflow