2010-10-26 28 views
5

我面对的东西我不知道从哪里开始。Html在我的数据库中!

我目前在我的网站上有新闻栏目,新闻被添加到数据库中。 但是,它非常无趣,没有格式化!

我怎样才能让管理员添加这就是为了使新闻的事情加粗或加下划线,并有颜色等也将有可能把它保存在数据库中,我通常做。

很抱歉,如果这是一个非常愚蠢的问题,但它的东西我还没有遇到过!

感谢

+3

当心XSS攻击。 – Joshua 2010-10-26 21:52:48

回答

2

虽然你可以把HTML在你的数据库并显示它没有直接的正常编码的步骤,你可以使用输出文本转换为HTML,我不会推荐它,除非你绝对相信大家会进入内容。

我的意思是不仅仅像安全一样(因为任何可以将HTML插入到页面中的人都可以通过脚本注入来接管其他用户对该网站的使用),还有能力:只需要一个流浪未公开<div>或其他类似的标记错误来完全软管页面布局。

一种可能性是使用强HTML整洁和“净化器”,只允许已知安全标记兽医传入HTML意见书。这是一个棘手的工作,所以使用现有的库来完成它。另外,也许更可用,你可以提供一个你自己的简单标记语言。例如*italic*, **bold**, http:​//www.example.com/ - >斜体大胆http://www.example.com/

有很多这些小标记语言。一个堆栈溢出使用,我现在在这个框中输入,被称为Markdown。 (Markdown并不是我最喜欢的,主要是因为在通常的实现中,它也允许标记本身内的HTML内容,这有点难看,当人们试图谈论标签而不把它们放在``引用中。但这是一个很受欢迎的例子。还有很多:bbcode,reST,Textile等......)

1

添加CKEditor的形式管理员可以使用将使他们能够创造一些时髦的HTML。 CKEditor非常易于安装和使用。您可以像从当前HTML那样将输出保存到数据库中。

+1

字面上有几十个不同的编辑器可用。 CKEditor似乎做得非常好。 – NotMe 2010-10-26 21:47:36

1

肯定的:

INSERT INTO tbl (html_text) values ('<h1>Hello, world.</h1>') 

(你应该使用参数化查询,当然)

1

如果他们输入的数据为HTML,你可以在DB其存储为VARCHAR(max)和你应该没问题,只要它在HTML中被解析为HTML时(即在网页中)。否则,如果它被解析为纯文本,你会看到所有的HTML标签。

1

您可以使用任意数量的富文本编辑器来提供将格式应用于文本的功能。然后,您可以将其保存在数据库中,就像纯文本一样。

只要确保HTML编码您的输出。

我更喜欢CKEditor我的富文本编辑器。非常强大,成熟和跨平台。

+0

+1对于CK。它是Word HTML中唯一能够有效保护您的前端,即开箱即用的编辑器。如果你从来没有纠结过这个烂摊子,它可以通过超出文本字段来摧毁CMS,并且可以减少无谓的额外开销。 – bpeterson76 2010-10-26 21:57:20

+0

同意,没有清理的Word内容会破坏你的网站设计! – 2010-10-26 22:07:43