Foros del Web » Programando para Internet » PHP »

Horror no error

Estas en el tema de Horror no error en el foro de PHP en Foros del Web. Hola Foro: Estoy haciendo un Foro de Discusión y resulta que le dije a unos colegas míos que me dieran una mano trasteandolo y probando ...
  #1 (permalink)  
Antiguo 30/11/2004, 22:22
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Horror no error

Hola Foro:
Estoy haciendo un Foro de Discusión y resulta que le dije a unos colegas míos que me dieran una mano trasteandolo y probando los posibles errores. Pues bien uno de ellos se le ocurrio escribir los siguiente en el cuerpo del mensaje:
Código HTML:
 < marquee >Probando si esto sirve < /marquee > 
y efectivamente cuando le dio vista previa al mensaje salia la marquesina. Lo probé también poniendo código JavaScript y PHP pero no salío nada. No se cuan seguro sea esto. Como puedo hacer para evitar que me introduzcan cualquier tipo de etiqueta HTML? Los mensajes los muestro de esta forma:
Código PHP:
 nl2br($rpfetch['mensaje']); 
Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 30/11/2004, 23:30
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Lo mejor es que no permitas código HTML... sino algunas etiquetas tipo BBCode que puedes controlar fácilmente para dar formato.
Todo el texto lo pasas por una función que convierta los tags HTML como htmlentities() o htmlspecialchars()... y luego cambias los tags propios por los htmls que sí quieres mostrar.

O sea,primero limpias todo el HTML y luego conviertes tus tags propios en HTML. De esa manera el usuario sólo podrá insertar el HTML que esté permitido en tus tags. Y si inserta html, el navegador lo mostrará como código.
Te pongo un ejemplo muy simple:
Código PHP:
$texto "Este texto contiene tags <b>html</b> y [negrita]mis propios tags[/negrita]";
$texto htmlentities($texto);
$texto str_replace("[negrita]""<b>"$texto);
$texto str_replace("[/negrita]""</b>"$texto);
echo 
$texto
Verás que el html que ingresa el usuario no le sirve... simpemente servirá lo que formatee con tus etiquetas... y de eso sí tienes control.

Saludos
  #3 (permalink)  
Antiguo 30/11/2004, 23:34
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Y claro que funciones para hacer BBcode (o vBcode)... vas a encontrar muchas por ahí... lo que te puse es sólo un ejemplo de cómo deben funcionar...

Saludos
  #4 (permalink)  
Antiguo 30/11/2004, 23:42
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Ya entendi

Ahora me queda una duda, si por ejemlo quiero poner que el codigo que este entre [ HTML ] y [ /HTML ], o [ PHP ] y [ /PHP ] fuese coloreado al igual que lo hace FDW como lo haria?

Salu2
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 01/12/2004, 01:22
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 19 años, 11 meses
Puntos: 2
También puedes usar la funcion strip_tags

http://es2.php.net/manual/es/function.strip-tags.php
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #6 (permalink)  
Antiguo 01/12/2004, 03:12
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 0
Si usar la funcion strip_tags creo que es la recomendada, porque evitas cualquier tag html, y además te permite definir los que quieres que sean permitidos.
  #7 (permalink)  
Antiguo 01/12/2004, 18:19
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno... eso depende... porque es un foro... y recuerda que hay usuarios que no emplean tags BBcode ni de nigún tipo... sino que postean todo en texto plano...
Miren este ejemplo:

<a href=#>algo</a>
<span class="esti">texto texto</span>

Si se dan cuenta... ustedes pueden ver las etiquetas que puse arriba. Este foro no las eliminó... y eso tiene una razón. A veces los usuarios quieren postear su código para que se les ayude... Si hubiéramos hecho strip_tags() a mi ejemplo de arriba sólo iba a salir en el foro:

algo
texto texto

Y claro... no serviría de nada... por eso yo me quedo, en este caso, con una función tipo htmlentities()... que me muestra las etiquetas que puso el usuario (claro, sin interpretarlas para que no haya problemas)

Espero se haya entendido.

Saludos
  #8 (permalink)  
Antiguo 02/12/2004, 02:07
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 0
Pero en la funcion striptags se le pueden pasar como parametros, tags que quieras permitir. Entonces si solo permites lo que creas necesarios también va bien.
  #9 (permalink)  
Antiguo 02/12/2004, 10:48
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Creo que no entendiste... la idea no es deshacerte de los tags...
La idea es poder mostrarlos, pero sin que el navegador los interprete.

Saludos
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 00:38.