2010-10-26 11 views
5

Me enfrento a algo que no sé por dónde empezar.Html en mi base de datos!

Actualmente tengo una sección de noticias en mi sitio web, las noticias se agregan a la base de datos. Sin embargo, es muy aburrido y no tiene formato!

¿Cómo puedo permitir que el administrador agregue noticias para que las cosas sean negrita o subrayadas y tengan color, etc.? Será posible guardar esto en la base de datos como suelo hacerlo.

Lo siento si es una pregunta muy tonta, pero es algo que no he encontrado antes.

Gracias

+3

Tenga cuidado con el ataque XSS. – Joshua

Respuesta

2

Si bien puede poner HTML en su base de datos y mostrarlo directamente sin el paso de codificación normal que usaría para generar texto en HTML, no lo recomendaría a menos que confíe plenamente en todos los que ingresarán contenido.

Me refiero a confiar no solo en seguridad (porque cualquiera que pueda insertar HTML en su página podrá hacerse cargo del uso de otros usuarios del sitio a través de script-injection), sino también competencia: solo se necesita uno Unclosed <div> u otro error similar de marcado para manguera completamente el diseño de la página.

Una posibilidad es examinar los envíos de HTML entrantes utilizando un ordenado HTML fuerte y un "purificador" para permitir solo el marcado conocido seguro. Este es un trabajo complicado, por lo tanto, use una biblioteca existente para hacerlo. Alternativamente, y tal vez más útil, puede proporcionar un lenguaje de marcado sencillo. Por ejemplo *italic*, **bold**, http:​//www.example.com/ ->cursiva, negrita, http://www.example.com/.

Existen muchos de estos pequeños lenguajes de marcado. El único Stack Overflow utiliza, que estoy escribiendo en este cuadro en este momento, se llama Markdown.

(Markdown no es mi favorito, principalmente porque en la implementación habitual también permite contenido HTML dentro del marcado, lo que es un poco feo y causa problemas aquí cuando la gente intenta hablar sobre etiquetas sin ponerlas en `-quotes.Pero es un ejemplo popular; hay muchos más: bbcode, reST, Textile, etc ...)

1

Adición CKEditor a una forma que el administrador puede utilizar les permitirá crear algo de HTML funky. CKEditor es muy fácil de configurar y usar. Puede guardar el resultado en la base de datos como lo hace con su HTML actual.

+1

Hay literalmente docenas de editores diferentes disponibles. CKEditor es uno que parece hacer un muy buen trabajo. – NotMe

1

Claro:

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

(. Debe utilizar consultas con parámetros, por supuesto)

1

Si entran los datos en formato HTML se puede almacenar en la base de datos como un varchar (max) y deberías estar bien, siempre que se analice como HTML cuando aparece (es decir, en una página web). De lo contrario, si se analiza como texto sin formato, verá todas las etiquetas HTML.

1

Puede usar cualquier número de editores de texto enriquecido para proporcionar la funcionalidad para aplicar formato al texto. Luego puede guardar eso en el DB, tal como lo haría con el texto sin formato.

Solo asegúrate de codificar HTML en tu salida.

Prefiero el CKEditor para mi editor de texto enriquecido. Muy robusto, maduro y multiplataforma.

+0

+1 para CK. Es el único editor que efectivamente lo protege en el frente, de fábrica, desde Word HTML. Si nunca te has enredado con ese lío, puede destruir los CMS al sobrepasar los campos de texto y ralentizar las cosas con una sobrecarga innecesaria. – bpeterson76

+0

De acuerdo, el contenido de Word no limpiado DESTRUIRÁ su diseño del sitio! –

Cuestiones relacionadas