HTML en tus textareas con TinyMCE en la parte cliente y Zend Framework (Zend_Filter) en la parte servidora

¡Zend Framework es una pasada! Personalmente me gusta mucho por varias razones: está programado completamente en PHP5 bajo el paradigma de la orientación a objetos, está desarrollado de acuerdo a una filosofía súper flexible, etc. ¿Sabías que Zend es absolutamente modular? Sí, sí. Está diseñado para que tomes el componente que necesitas en una situación determinada sin tener que preocuparte de otras partes del framework que no tienen nada que ver con tu problema. ¡Eso es fantástico!

A diferencia de otros frameworks de desarrollo PHP, con Zend sólo tienes que centrarte en el componente que vayas a utilizar en ese momento. Ya verás. Hoy muestro cómo filtrar los textareas HTML con la clase Zend_Filter para que en el servidor queden sólo las etiquetas HTML que tú quieres.

Como éste es uno de mis primeros posts sobre Zend Framework voy a aprovechar esta ocasión para presentártelo muy brevemente. Enumero a continuación sus ventajas:

  • ¡Zend viene con todo lo que necesitas en una aplicación web típica!: arquitectura MVC, autenticación, búsqueda, creación de PDFs, emails, etc.
  • El diseño de Zend Framework es moderno. Zend está desarrollado íntegramente en PHP5 de acuerdo a los patrones de diseño de software y te invita a que codifiques tus aplicaciones con PHP5 orientado a objetos.
  • Zend no te obliga a poner todos sus componentes en tus aplicaciones, sino que te permite poner justo lo que necesitas. Esto es posible porque cada componente de Zend tiene pocas dependencias con el resto de componentes. Gracias a su modularidad, pues, este framework es muy fácil de aprender.
  • Para Zend la documentación es muy importante. El equipo de desarrollo no incorpora nuevo código hasta que no se publica la documentación correspondiente. Puedes echar un vistazo al manual oficial en http://framework.zend.com/manual/
  • El desarrollo con Zend Framework es sencillo y rápido.

Si quieres conocer más a fondo todo lo que este fantástico framework PHP puede ofrecerte, te recomiendo que leas el libro Zend Framework in Action, publicado por Manning y escrito por Rob Allen, Nick Lo y Steven Brown.

Llegados aquí voy a explicarte cómo puedes filtrar con Zend el HTML que pones a disposición de tus usuarios mediante el editor de texto WYSIWYG TinyMCE, programado en JavaScript. Supongo que ya estás familiarizado con TinyMCE, que ya lo has utilizado en alguno de tus desarrollos, vaya; de no ser así, echa por favor un vistazo a la documentación oficial de TinyMCE.

Supongamos, por tanto, que tenemos un sistema CMS que permite editar una página mediante este HTML:

Las opciones de inicialización del TinyMCE son éstas:

Así las cosas, el textarea se ve así:

Según los botones habilitados en el JavaScript, permitimos que los usuarios puedan insertar etiquetas HTML como las siguientes: <b>, <strong>, <p>, <br>, <style>. Pero recordemos, ¡nunca hay que confiar en la entrada del usuario! Ciertamente, una vez desplegado el sistema anterior sucederá que los usuarios copypastearán directamente algún código HTML en el textarea, o bien escribirán las etiquetas HTML que quieran. Siempre hay que filtrar la entrada del usuario en el servidor para que coincida con las etiquetas HTML habilitadas en el TinyMCE.

En este punto entra en juego Zend_Filter. Este componente proporciona un conjunto de filtros de datos junto con un mecanismo de encadenamiento con el que se puede aplicar varios filtros a un solo dato. Un filtro transforma unos datos de entrada para que dichos datos satisfagan las condiciones que quiere el programador. La transformación puede consistir en el borrado de una determinada entrada, considerada ilegal, o en el borrado de los espacios en blanco que los usuarios escriben a veces, accidentalmente, al inicio o al final de las palabras.

Clases Zend_Filter:

  • Alnum borra todos los caracteres de la entrada a excepción de los caracteres alfabéticos y numéricos
  • Alpha borra todos los caracteres de la entrada a excepción de los caracteres alfabéticos
  • Digits borra todos los caracteres de la entrada a excepción de los caracteres numéricos
  • HtmlEntities convierte los caracteres a sus correspondientes entidades HTML
  • Int es equivalente a (int)
  • StringToLower convierte los caracteres alfanuméricos a minúsculas
  • StringToUpper convierte los caracteres alfanuméricos a mayúsculas
  • StringTrim elimina los caracteres en blanco al principio y al final de una cadena
  • StripTags elimina las etiquetas HTML y PHP

Ya en el servidor, limpiar el textarea es tan sencillo como utilizar los filtros Zend correspondientes. De acuerdo a las etiquetas HTML que habilitamos en el TinyMCE, sólo nos interesan las etiquetas HTML <a>, <p>, <br>, <b>, <strong>, <em>, <span>. Vamos por tanto a filtrar la entrada. Eliminamos las etiquetas HTML que el usuario escribe manualmente o que pueden generarse en un copypaste:

0 comentarios

¿Me dejas un comentario? ¡Gracias!

Deja un comentario

Los campos obligatorios están marcados con *