Foros del Web » Programando para Internet » PHP »

Script PHP-permitir ciertos tags

Estas en el tema de Script PHP-permitir ciertos tags en el foro de PHP en Foros del Web. Hola Llevo todo el día usando el "Buscar" del foro para encontrar la información que necesito. Se trata de encontrar, o crear un script, que ...
  #1 (permalink)  
Antiguo 22/04/2006, 14:56
Avatar de ortiz  
Fecha de Ingreso: septiembre-2004
Mensajes: 154
Antigüedad: 13 años, 2 meses
Puntos: 0
Script PHP-permitir ciertos tags

Hola

Llevo todo el día usando el "Buscar" del foro para encontrar la información que necesito. Se trata de encontrar, o crear un script, que al pasarle un texto, de alguna manera anule los tags más peligrosos como se hace en los blogs.

Ciertamente, he encontrado información al respecto, pero quizá no está tan tratado como otros temas.

He leído sobre las funciones php, strip_tags, htmlentities, etc. También sobre el BBcode. Aún y así, sigo sin tenerlo claro. También llegué a leer sobre el SafeHtml, pero no se si es recomendable.

También busque en HotScripts, pero no conseguí encontrar nada parecido. Es el problema de hacer las cosas a mano Si usara el WordPress no tendría estos problemas.

Por lo pronto, usaré alguna función de php para anular todo código html, pero me gustaría al menos, que la gente pudiera utilizar sólo unas pocas etiquetas, como <a>, <b> o <img>.

¿Algún consejo?

Gracias!
__________________
Juegos de Estrategia para PC - Warphammer.net :: Estrategia sólo en castellano
  #2 (permalink)  
Antiguo 22/04/2006, 17:30
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Deberías echarle un ojo al comando str_replace()
  #3 (permalink)  
Antiguo 22/04/2006, 18:09
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
A continuación el str_replace puesto en práctica:

Código PHP:
<?
function reemplazar($cadena){
//Evitar confusiones con el HTML
$cadena=str_replace("<","&lt;",$cadena);
$cadena=str_replace(">","&gt;",$cadena);
//Tipos de letra
$cadena=str_replace("[cursiva]","<i>",$cadena);
$cadena=str_replace("[/cursiva]","</i>",$cadena);
$cadena=str_replace("[rojo]","<font color='#FF0000'>",$cadena);
$cadena=str_replace("[/rojo]","</font>",$cadena);
$cadena=str_replace("[negrita]","<b>",$cadena);
$cadena=str_replace("[/negrita]","</b>",$cadena);

return 
$cadena;
}

?>

Aplicando la función a una variable:

Código PHP:
<?  echo reemplazar($variable); ?>
Suerte!
  #4 (permalink)  
Antiguo 23/04/2006, 10:48
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
usar str_reeplace para esto no sirve, si alguien no cierra un tag queda el tag abierto... hay q usar expresiones regulares, pero mas facil todavia

$texto = strip_tags($html, "<a>,<b>,<img>");
__________________
Internet Explorer SuckS
Download FireFox
  #5 (permalink)  
Antiguo 23/04/2006, 17:33
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Amigo ami se me ocurre los siguiente:
Podrías con el uso de la funcion strtr remplazar las expresiones contenidas dentro una cadena que quieras salvar para luego recuperarlas de una misma manera.-
Código PHP:
<?php
$TexTarea 
// Supongamos que $TexTarea es la variable procesar

$TagsSeguras = array(
"<b>" => "OpenNegrita",
"</b>" => "CierraNegrita",
"<img>" => "OpenImagen",
"</img>" => "CierraImagen");
strtr("$TexTarea"$TagsSeguras);
//
// Aqui tu codigo que filtra las TAGs no deseadas
//
$TagsDevueltas = array(
"OpenNegrita" => "<b>",
"CierraNegrita" => "</b>",
"OpenImagen" => "<img>",
"CierraImagen" => "</img>");
strtr("$TexTarea"$TagsDevueltas);
?>
Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com

Última edición por xyyy7; 23/04/2006 a las 17:40
  #6 (permalink)  
Antiguo 25/04/2006, 04:30
Avatar de ortiz  
Fecha de Ingreso: septiembre-2004
Mensajes: 154
Antigüedad: 13 años, 2 meses
Puntos: 0
Buen hilo

Estoy seguro de que este hilo ofrecerá mucha ayuda a la gente interesada en este tema, buena información

Yo al final, opté por probar el SafeHtml (aún no había mirado vuestras respuestas) y aún estoy probandolo. No se si es completamente seguro contra SQL o HTML injection, espero que sí :S

Por otro lado, un compañero de trabajo me dijo que hay una función que descarta automáticamente todas las etiquetas html, excepto las que tú le pasas por parámetro. ¿Sabéis que función es?


Saludos.
__________________
Juegos de Estrategia para PC - Warphammer.net :: Estrategia sólo en castellano
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 19:35.