Pregunta

Si escapo algún código porque quiero que se muestre como el código real en html (por ejemplo, para un fragmento de código de ejemplo), lo guardo en la base de datos y luego lo devuelvo al editor (una página html), se muestra como html. , a diferencia del texto escapado.

Mi problema surge cuando incluyo una etiqueta de área de texto en el texto porque cerrará prematuramente el área de edición y cortará el resto de lo que escribo cuando se guarde (o más si no cierro la etiqueta).

Entonces mi pregunta es:¿Es este el comportamiento previsto por parte del navegador?-> ¿Entonces necesito escapar del texto (tal vez código y etiquetas previas)?¿Cada vez que quiero hacerle cambios?¿O estoy haciendo algo mal?

*Tenga en cuenta que soy la única persona que usa esto y es principalmente solo para aprender, por lo que no me preocupa tanto el aspecto de seguridad como la forma en que lo controlo. Necesito manejar mi html cuando lo uso en un navegador y hacer que se comporte de la manera adecuada. una forma esperada.

¿Fue útil?

Solución

@Bob: htmlentities () no es lo mismo que htmlspecialchars ()

htmlentities () convertirá cada carácter que tenga un código ASCII a ese código. htmlspecialchars () solo hará aquellos que son especiales en HTML, como & amp ;, comillas y < o >

Esta es una diferencia bastante importante que puede romper algunas cosas y también puede hacer que el resultado sea enorme al usar htmlentities ().

Otros consejos

En mi experiencia, necesitas hacer algún tipo de escape de personaje especial. En PHP la función es htmlspecialchars (). No sé sobre otras funciones. Pero la exploración mostrará los caracteres codificados en el área de texto correctamente.

La mayoría de los lenguajes basados ​​en web tendrán alguna función de biblioteca para escapar de caracteres interpretados en HTML, así que consulte la documentación del idioma que esté utilizando.

Como dijo Darryl, html_entities() (que es un alias para htmlspecialchars()) funcionará en PHP.

¿Es este comportamiento previsto por parte del navegador? Sí, el navegador interpreta su código HTML (sin escape) como etiquetas HTML que pertenecen a la página y actúa sobre ellas.

¿Entonces necesito escapar del texto (tal vez el código y las etiquetas previas)? Sí, como dijo Darryl Hein, use htmlspecialchars (). El navegador los mostrará correctamente, y no necesita & Quot; dejar de escapar & Quot; los datos a medida que vuelven de la edición.

... ¿estoy haciendo algo mal? Debe inspeccionar cualquier entrada que llegue a su aplicación o la deje y ver si existe la posibilidad de que haya caracteres en ella que tengan un significado especial para el navegador, para su servidor de base de datos y para otras partes de su solución. Debe escapar los caracteres especiales correctamente para cada interacción (es decir, mysql_escape_string () para la base de datos MySQL, htmlspecialchars () para HTML, etc.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top