HTML 数据库中的代码
HTML code in a database
将 html 代码放入 MySql 数据库是一种好习惯吗?。更具体地说,我有一个博客。我在数据库中为每个部分都有一个单独的字段:页面标题(元数据)、描述、post 的标题、post 的 body... body 的字段有时需要 html 或区分每个 [=32= 的 body 文本之间的字幕、img 或视频及其字幕的方法].
我是唯一一个将内容放入该数据库的人。所以我想我不需要清理任何 html.
- 将 html 代码放入 MySql 数据库是一个好习惯吗?
- 如果 html 不是一个好的做法,如何区分 body 和 post
之间的 YouTube 视频和字幕
我不建议将 HTML 存储在您的数据库中,因为它需要太多的清理来防止在您的数据库中存储恶意 Javascript 代码。因此,您可以使用 PHP markdown 库以人类直观的格式很好地格式化您的消息,当您显示它时将解析为 HTML,类似于 Whosebug 或 Github。
示例:
1. List 1
2. List 2
转换为:
<ol>
<li>List 1</li>
<li>List 1</li>
</ol>
对于评论中提到的Youtube embedding,有一个简单的markdown解决方案:添加一个额外的markdown规则!
您可以像这样使 markdown 语法简洁:@[Alt text] (YouTube-code)
这将转化为以下 HTML:
<iframe class="youtube" width="560" height="315" src="http://www.youtube.com/embed/{{YouTube-code }}?wmode=opaque" frameborder="0" allowfullscreen>{{ Alt text }}</iframe>
查看有关如何为 YT 实施此降价语法的信息来源:
就博客而言,最好将博客添加到数据库中。因为有很多 html 标签需要在不同的地方实现,所以我们不能静态地或通过代码来实现。
将正文存储到数据库的最佳方式:-
尝试在要放入数据库的字符串上使用 htmlspecialchars(),然后在将其拉回时使用 htmlspecialchars_decode()
希望对您有所帮助。
没有"right"方法。
在数据库中存储HTML完全没有问题。 SO 将 Markdown 和呈现的 HTML 存储在数据库中。提供 HTML 可以更快地呈现页面,因为 Markdown 已经被解析。如果一个post被编辑,Markdown将被再次解析为HTML并存储在数据库中。
另一种方法是只保存 Markdown(或 HTML)。因为只有您会创建页面,所以没有必要检查输入的恶意代码。如果您仍想这样做,我建议您查看 HTMLPurifier,它非常有用。
问题:将 HTML 代码存储在 MySQL 数据库中是好的做法吗?
答案:不,不是。
您永远不应显示来自数据库的 HTML 代码。始终假设数据库 (XSS) 中可能存在恶意 HTML 代码,即使您是唯一有权访问它的人。永远不要显示这个 HTML.
使用其他库或格式将标签转换为 HTML。它允许您像这样存储字幕:[subtitle]This Subtitle[/subtitle]
并稍后将这些标签转换为(示例)<h2>This Subtitle</h2>
.
这样,当您想要将字幕从 <h2>
更改为 <h3>
时,您只需在一个地方执行此操作,而不用更改您发表的每篇博文。
另一个例子是 youtube 视频:假设您存储 HTML。明天,YouTube 将更改其播放器,您必须更改您发布的每个 YouTube 视频。如果您使用 [youtube]http://www.youtube.com/whatevervide[/youtube]
,那意味着您只需更改 HTML 代码一次。
将 html 代码放入 MySql 数据库是一种好习惯吗?。更具体地说,我有一个博客。我在数据库中为每个部分都有一个单独的字段:页面标题(元数据)、描述、post 的标题、post 的 body... body 的字段有时需要 html 或区分每个 [=32= 的 body 文本之间的字幕、img 或视频及其字幕的方法].
我是唯一一个将内容放入该数据库的人。所以我想我不需要清理任何 html.
- 将 html 代码放入 MySql 数据库是一个好习惯吗?
- 如果 html 不是一个好的做法,如何区分 body 和 post 之间的 YouTube 视频和字幕
我不建议将 HTML 存储在您的数据库中,因为它需要太多的清理来防止在您的数据库中存储恶意 Javascript 代码。因此,您可以使用 PHP markdown 库以人类直观的格式很好地格式化您的消息,当您显示它时将解析为 HTML,类似于 Whosebug 或 Github。
示例:
1. List 1
2. List 2
转换为:
<ol>
<li>List 1</li>
<li>List 1</li>
</ol>
对于评论中提到的Youtube embedding,有一个简单的markdown解决方案:添加一个额外的markdown规则!
您可以像这样使 markdown 语法简洁:@[Alt text] (YouTube-code)
这将转化为以下 HTML:
<iframe class="youtube" width="560" height="315" src="http://www.youtube.com/embed/{{YouTube-code }}?wmode=opaque" frameborder="0" allowfullscreen>{{ Alt text }}</iframe>
查看有关如何为 YT 实施此降价语法的信息来源:
就博客而言,最好将博客添加到数据库中。因为有很多 html 标签需要在不同的地方实现,所以我们不能静态地或通过代码来实现。
将正文存储到数据库的最佳方式:- 尝试在要放入数据库的字符串上使用 htmlspecialchars(),然后在将其拉回时使用 htmlspecialchars_decode()
希望对您有所帮助。
没有"right"方法。
在数据库中存储HTML完全没有问题。 SO 将 Markdown 和呈现的 HTML 存储在数据库中。提供 HTML 可以更快地呈现页面,因为 Markdown 已经被解析。如果一个post被编辑,Markdown将被再次解析为HTML并存储在数据库中。
另一种方法是只保存 Markdown(或 HTML)。因为只有您会创建页面,所以没有必要检查输入的恶意代码。如果您仍想这样做,我建议您查看 HTMLPurifier,它非常有用。
问题:将 HTML 代码存储在 MySQL 数据库中是好的做法吗?
答案:不,不是。
您永远不应显示来自数据库的 HTML 代码。始终假设数据库 (XSS) 中可能存在恶意 HTML 代码,即使您是唯一有权访问它的人。永远不要显示这个 HTML.
使用其他库或格式将标签转换为 HTML。它允许您像这样存储字幕:[subtitle]This Subtitle[/subtitle]
并稍后将这些标签转换为(示例)<h2>This Subtitle</h2>
.
这样,当您想要将字幕从 <h2>
更改为 <h3>
时,您只需在一个地方执行此操作,而不用更改您发表的每篇博文。
另一个例子是 youtube 视频:假设您存储 HTML。明天,YouTube 将更改其播放器,您必须更改您发布的每个 YouTube 视频。如果您使用 [youtube]http://www.youtube.com/whatevervide[/youtube]
,那意味着您只需更改 HTML 代码一次。