Foros del Web » Programando para Internet » PHP »

HTML en MySQL

Estas en el tema de HTML en MySQL en el foro de PHP en Foros del Web. Estoy diagramando un pequeño foro, en el textarea de los post estoy usando un editor WYSIWYG que me envía el texto con formato html a ...
  #1 (permalink)  
Antiguo 13/03/2005, 21:37
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Pregunta HTML en MySQL

Estoy diagramando un pequeño foro, en el textarea de los post estoy usando un editor WYSIWYG que me envía el texto con formato html a la base de datos. Para una mayor seguridad le coloqué la función htmlentities antes de cargarla ... hasta ahí todo bien.
Cuando hago una consulta para pedir el texto me devuelve en pantalla el código html escrito, no interpretado, o sea me escribe los tags. Probé con el nl2br pero es lo mismo (sé que no es la función exacta para eso) ...
¿Alguien me podría dar una manito con eso?
Aclaro algo, si le elimino el htmlentities antes de cargar en la base de datos imprime el texto perfecto.
Saludos y desde ya gracias
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #2 (permalink)  
Antiguo 13/03/2005, 22:07
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
solo por curiosidad... ¿qué editor es el que usas???
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 13/03/2005, 22:51
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
HTMLarea
saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #4 (permalink)  
Antiguo 14/03/2005, 08:53
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
¿Nadie sabe como revierto la función htmlentities?
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #5 (permalink)  
Antiguo 15/03/2005, 10:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En los comentarios de los usuarios de dicha función tienes ejemplos para hacer lo contrario a htmlentities:

www.php.net/htmlentities

Si usas PHP 4.3.0 en adelante puedes usar:
html_entity_decode() que hace eso mismo ...


Pero .. lo que deberías hacer es guardar en tu BD el texto (el HTML generado en ese editor visual) tal cual es .. Sólo aplicar HTMLentities cuando lo presentas .. es decir, cuando lo obtienes de tu BD y vas a presentarlo ahí aplicas htmlentieties() para evitar que se interprete código HTML malicioso.

Un saludo,
  #6 (permalink)  
Antiguo 15/03/2005, 10:07
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Gracias Cluster, estaba pensando justamente en guardarlo en html y usar el entities para mostrarlo pero no estaba muy seguro ... gracias de nuevo.
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #7 (permalink)  
Antiguo 15/03/2005, 14:29
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Cita:
Iniciado por Cluster
Si usas PHP 4.3.0 en adelante puedes usar:
html_entity_decode() que hace eso mismo ...


Pero .. lo que deberías hacer es guardar en tu BD el texto (el HTML generado en ese editor visual) tal cual es .. Sólo aplicar HTMLentities cuando lo presentas .. es decir, cuando lo obtienes de tu BD y vas a presentarlo ahí aplicas htmlentieties() para evitar que se interprete código HTML malicioso.

Un saludo,
Hola Cluster, probé lo que me recomendaste y no me funciona, pongo el código a ver si podemos encontra la falla ...

Cita:
mysql_query("insert into foros set foro_titulo='$titulo', foro_mensaje='$texto'");
echo $texto; // muestro el texto que viene por post
$te = mysql_query("select * from foros order by foro_id desc");
$txt = mysql_fetch_array($te);
echo "<br><br>Texto: ".htmlentities($txt[foro_mensaje]); // muestro el texto que viene de la bd
y lo que me imprime es:

Cita:
Hola de nuevo // perfecto
Texto: <EM>Hola</EM> <U>de</U> <STRONG>nuevo</STRONG> // código html
el código fuente de esa página es:

Cita:
<EM>Hola</EM> <U>de</U> <STRONG>nuevo</STRONG><br><br>Texto: &lt;EM&gt;Hola&lt;/EM&gt; &lt;U&gt;de&lt;/U&gt; &lt;STRONG&gt;nuevo&lt;/STRONG&gt;
Desgraciadamente uso el php 4.2.2 (el mismo que uso en mi hosting) así que la función html_entity_decode() no me funciona.
Espero su ayuda
Saludos

JuanP
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #8 (permalink)  
Antiguo 15/03/2005, 15:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. es eso lo que vas a recibir si aplicas htmlentities() .. De hecho no tiene sentido aplicar htmlentities() en ese punto y luego la función ¿inversa?. Si de tu "HTML area" puede llegar cualquier tag HTML .. si aplicas htmlentities() a todo eso . .no se interpretará todo ese HTML.

Lo que deberías es tener una lista de los tag's HTML que deseas que no se interpreten para descartar los que potencialmente puedan resultar peligrosos. En ese caso usarías:

strip_tags()
www.php.net/strip_tags

Un saludo,
  #9 (permalink)  
Antiguo 15/03/2005, 15:24
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
No te entiendo, primero me escribis esto ...
Cita:
Pero .. lo que deberías hacer es guardar en tu BD el texto (el HTML generado en ese editor visual) tal cual es .. Sólo aplicar HTMLentities cuando lo presentas .. es decir, cuando lo obtienes de tu BD y vas a presentarlo ahí aplicas htmlentieties() para evitar que se interprete código HTML malicioso.
y ahora ...
Cita:
Bueno .. es eso lo que vas a recibir si aplicas htmlentities() .. De hecho no tiene sentido aplicar htmlentities() en ese punto y luego la función ¿inversa?. Si de tu "HTML area" puede llegar cualquier tag HTML .. si aplicas htmlentities() a todo eso . .no se interpretará todo ese HTML.
La pregunta es simple ... ¿se puede hacer?, la idea la tome de http://www.zonaphp.com/index.php?mod...id=23&pagina=4 cuyo link lo saqué de este foro ... y ahí meten los tags con el htmlentities en la bd ...
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #10 (permalink)  
Antiguo 15/03/2005, 15:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok .. pero lo que no sabía exactamente (o no me dí cuenta antes) es que en ese "HTML area" tu puedes escribir todo el HTML que gustes (sea en modo "WYSING" o no ) .. si es así .. htmlentities() ya has observado que va hacer eso mismo .. no va interpertar nada .. por eso ahora te hago la sugerencia de que uses strip_tags() para que sólo habilites el uso de los tags HTML que tu creas necesarios ..

Ahora ... no compares la situación que tu tienes con la del tutorial que presentas.

En tu situación tienes un editor HTML visual para escribir el tag HTML de forma visual .. en el ejemplo del tuturial usan sus própios códigos (como [cita] .. [/cita] .. etc) para hacer algo concreto .. NO permite HTML de ninguna forma en el cuerpo del mensaje .. por eso directamente lo guarda en la BD con htmlentities() .. (ocupando algo más de espacio en la BD vs menos tiempo de proceso al presentar esos mensajes).

Un saludo,

Un saludo,
  #11 (permalink)  
Antiguo 15/03/2005, 16:25
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Ok, ya entendí ... ¿vos me podrías orientar sobre el uso de strip_tags?, no comprendo muy bien en php.net o si conocés algún artículo para recomendar.
Gracias
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #12 (permalink)  
Antiguo 15/03/2005, 17:13
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
Perdoná, pero no entiendo que pedís...
Tenés un editor que te lo envía en formato HTML, querés que el texto que envía el usuario aparezca tal cual (o sea, sin interpretar las etiquetas HTML) pero que las etiquetas que envía el editor queden?

strip_tags mucho no me gusta... elimina todas las etiquetas HTML y PHP excepto las que permitis
por ejemplo
<?php
echo strip_tags("<strong><u>texto</u></strong>","<u><br>");
?>
devuelve <u>texto</u>
  #13 (permalink)  
Antiguo 15/03/2005, 17:30
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Cita:
Iniciado por Seppo
Perdoná, pero no entiendo que pedís...
Tenés un editor que te lo envía en formato HTML, querés que el texto que envía el usuario aparezca tal cual (o sea, sin interpretar las etiquetas HTML) pero que las etiquetas que envía el editor queden?

strip_tags mucho no me gusta... elimina todas las etiquetas HTML y PHP excepto las que permitis
por ejemplo
<?php
echo strip_tags("<strong><u>texto</u></strong>","<u><br>");
?>
devuelve <u>texto</u>
Exactamente, no quiero permitir que el usuario incorpore ningún código en el textarea, que en la bd entre nada más que lo que se envía por el editor, que también lo customicé ... por lo que veo no me queda otra que usar strip_tags, aunque a mí tampoco me gusta mucho por lo que estuve mirando hasta ahora.
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #14 (permalink)  
Antiguo 15/03/2005, 17:37
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
Yo haría que el editor no mande html... perdón, yo hice que en mi foro el editor no mande html =P
Lo que me pareció mejor es guardar el mensaje tal cual lo manda el usuario y después aplicarle todas las funciones PHP correspondientes a la muestra... así si htmlentities te funcionaría bien.
strip_tags no me gusta porque, por ejemplo, en los casos de arriba me hubiera borrado las etiquetas del ejemplo o las ubiese ejecutado, y no se entendería nada...
Sino, si siempre manda exactamente las mismas tags podés hacer, aunque no me gusta, que ejecute los primeros N caracteres, después usar entities y al final cerrar con html de vuelta, todo esto usando algo como susbtr, pero... es muy feo...
En realidad si siempre son las mismas etiquetas podrías agregarlas en la lista de mensajes como dije antes
  #15 (permalink)  
Antiguo 15/03/2005, 17:47
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Gracias Seppo, pruebo con el strip_tags entonces ... es un foro bastante sencillo y en gral para gente grande (lo q supone, o al menos creo yo, que usarán menos chiches de diseño) por lo q las etiquetas permitidas no son muchas ...
Gracias de nuevo
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #16 (permalink)  
Antiguo 16/03/2005, 11:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En ese caso puedes usar "BBcode" como usa este mismo editor de este foro .. si te fijas se basa en ciertos "tags" própios que definen unas cuantas acciones típicas para un mensaje de un foro .. Lease .. [img ] ... [/ img] para poner un imagen .. [b ] ...[/ b] para una letra en negrita .. y alguna más compleja.

De esa forma .. podrías usar htmlentities() con total libertad y hacer funciones como las que usan estos foros al estilo "[code ]" .. "[ code]" por si necesitases que pongan código en el foro para mostrarlo (pero sin correr el pelígro de que se ejecute).

Un saludo,
  #17 (permalink)  
Antiguo 16/03/2005, 13:36
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Gracias Cluster, así es como está hecho el tutorial que hablamos antes ¿no?
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #18 (permalink)  
Antiguo 16/03/2005, 14:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por jpvilar
Gracias Cluster, así es como está hecho el tutorial que hablamos antes ¿no?
Saludos
Sólo usa [cita ...] como tag própio .. pero esa es su filosofía .. por eso lo primero que hace es almacener lo que el usuario introduzca en su "tema" del foro (mensaje) sin HTML que pueda perjudicar a la hora de mostrarlo en una página común ..

Un saludo,
  #19 (permalink)  
Antiguo 16/03/2005, 15:03
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Cita:
Iniciado por Cluster
En ese caso puedes usar "BBcode" como usa este mismo editor de este foro .. si te fijas se basa en ciertos "tags" própios que definen unas cuantas acciones típicas para un mensaje de un foro .. Lease .. [img ] ... [/ img] para poner un imagen .. [b ] ...[/ b] para una letra en negrita .. y alguna más compleja.
¿Le puedo agregar BBcode a mi foro sin necesidad de usar un foro phpBB, o sea reemplazar mi editor WYSIWYG por un editor BBcode? ¿o debo programar todos los javascripts y tags a mano?
Gracias y saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #20 (permalink)  
Antiguo 16/03/2005, 15:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por jpvilar
¿Le puedo agregar BBcode a mi foro sin necesidad de usar un foro phpBB, o sea reemplazar mi editor WYSIWYG por un editor BBcode? ¿o debo programar todos los javascripts y tags a mano?
Gracias y saludos
Pues .. si .. puedes hacerlo. De hecho eso de "BBcode" no es más que una "técnica" que tanto la parte PHP (de manejo de expresiones regulares para ir interpretando tus própios psudo-tags própios) y la parte javascript . .ya alguien antes que nosotros se dió el trabajo de hacerlo ..

Eso sí ten presente que son dos partes bien diferenciadas: la parte PHP y la Javascript ..

Podrías extraerlo de phpBB (con paciencia) o de otros foros ya hechos ..
Por ejemplo:
http://www.phpclasses.org/browse/package/951.html
http://www.php-hispano.net/archivos/Clases/132/1
http://phplibex.sourceforge.net/bbcode-lib-howto.html

Y muchaaas más que salen si usas google: bbcode class php

Eso sería la parte "PHP" (no sé si alguna incluye ejemplos con algo de la parte javascript .. sólo usé google). Pero, la parte javascript la puedes consultar en dicho foro (creo que en las FAQ's tienen algo hecho .. )

Un saludo,
  #21 (permalink)  
Antiguo 16/03/2005, 16:04
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Gracias mil Cluster ... muy amable como siempre
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:52.