Foros del Web » Programando para Internet » PHP »

filtrar etiquetas en sistema de comentarios

Estas en el tema de filtrar etiquetas en sistema de comentarios en el foro de PHP en Foros del Web. hola amigos! tengo un sistema de comentarios sin base de datos (almacenados en archivo de texto) y quiero ponerle seguridad para qe no se puedan ...
  #1 (permalink)  
Antiguo 04/11/2011, 14:48
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 12 años, 7 meses
Puntos: 14
filtrar etiquetas en sistema de comentarios

hola amigos! tengo un sistema de comentarios sin base de datos (almacenados en archivo de texto) y quiero ponerle seguridad para qe no se puedan poner etiquetas html... alguien me ayuda un poco en como integrar este codigo:

Código PHP:
Ver original
  1. <?php  
  2.   function filtro ($texto) {  
  3.     $html = array("<", ">");  
  4.     $filtrado = array("&lt;", "&gt;");  
  5.     $final = str_replace($html, $filtrado, $texto);
  6.      
  7.     echo $final;  
  8.   }  
  9. ?>

a este codigo que tengo?.. es que no se bien en que archivo ponerlo para que no se ejecuten esas etiquetas...

tengo el archivo de texto donde se guardan los comentarios: comentario.txt

el archivo publicar.php

Código PHP:
<?php
$nombre 
$_POST['nombre'];
$comentario $_POST['comentario'];
$fecha date("j-n-Y h:i:s" );
$fp=fopen("comentario.txt","a+" );
$salida="
<!-- start coment ip = {$_SERVER["REMOTE_ADDR"]} -->
<TABLE bgcolor='#FFFF99' border=1 bordercolorlight='#C0C0C0' bordercolordark='#808080'>
<TR valign=top>
<TD width=300 height=28 bgcolor='#FFFF00' style='{border-color : #000000 #000000 #000000 #000000; border-style: solid; }'><div class='wpmd'>
<div><font face='Adobe Heiti Std R' color='#FF0000' class='ws11'><B><a href='http://taringa.net/$nombre' target='_blank'>$nombre</a></B></font><font face='Adobe Heiti Std R' class='ws11'> comento el <b>$fecha</b></font></div>
</div>
</TD>
</TR>
<TR valign=top>
<TD width=300 height=82><div class='wpmd'>
<div><font face='Adobe Heiti Std R' class='ws10'>$comentario</font></div>
</div>
</TD>
</TR>
</TABLE>
<!-- finish coment -->"
;
fwrite($fp,$salida);
fclose($fp);
header("Location:comentarios.php" );
?>
el archivo donde se hacen los comentarios que es algo asi:

Código PHP:
<form name="coment" action="publicar.php" method="post">
<p><b>Nick de Taringa!:</b></p>
<p><input type="text" name="nombre" size="30"/></p>
<p><b>Comentario:</b> <i>(que sea algo bueno)</i></p>
<p><textarea name="comentario" style="width:230px;height:100px;z-index:0"></textarea></p>
<p><input type="submit" name="submit" value="Publicar"/></p>
</form>

<br />
<hr>
<br />
<?php
readfile 
('comentario.txt');
?>
como hago para filtrar las etiquetas ahi?
  #2 (permalink)  
Antiguo 04/11/2011, 14:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: filtrar etiquetas en sistema de comentarios

Si lo que quieres es que no se ejecuten las etiquetas, te recomiendo usar htmlspecialchars, o en su caso, strip_tags, ambas debes de usarlas a la variable que usas para ingresar como comentario.

Saludos.
  #3 (permalink)  
Antiguo 04/11/2011, 15:19
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 12 años, 7 meses
Puntos: 14
Respuesta: filtrar etiquetas en sistema de comentarios

la de strip_tags no entendi muy bien. asi que creo que voy a usar htmlspecialchars
que parecio algo mas facil

Código PHP:
Ver original
  1. <?php
  2. $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
  3. echo $new; // &lt;a href='test'&gt;Test&lt;/a&gt;
  4. ?>

como crees que podria integrarlo?? le pongo las variables que tenia para los comentarios? y en ves de "echo $new" eso lo deberia poner en donde se publicaria el mensaje verdad?
  #4 (permalink)  
Antiguo 04/11/2011, 15:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: filtrar etiquetas en sistema de comentarios

Solamente debes de aplicarlo a la variable que vas a almacenar, en este caso es $_POST['comentario'].

Saludos.
  #5 (permalink)  
Antiguo 04/11/2011, 15:51
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 12 años, 7 meses
Puntos: 14
Respuesta: filtrar etiquetas en sistema de comentarios

Cita:
Iniciado por GatorV Ver Mensaje
Solamente debes de aplicarlo a la variable que vas a almacenar, en este caso es $_POST['comentario'].

Saludos.
no te entendi
  #6 (permalink)  
Antiguo 04/11/2011, 16:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: filtrar etiquetas en sistema de comentarios

Ya tienes ahí los ejemplos, es cuestión de que apliques la función a tu variable que recibe el comentario desde tu formulario HTML, antes de guardarlo en tu archivo de texto.

Si quieres que modifique tu código por ti, no lo haré ya que es algo muy simple que tu deberías de aprender y saber hacerlo.
  #7 (permalink)  
Antiguo 04/11/2011, 16:13
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 12 años, 7 meses
Puntos: 14
Respuesta: filtrar etiquetas en sistema de comentarios

se que tengo que poner en el publicar.php

esto:
Código PHP:
Ver original
  1. function filtro ($texto) {  
  2.     $html = array("<", ">");  
  3.     $filtrado = array("&lt;", "&gt;");  
  4.     $final = str_replace($html, $filtrado, $texto);

donde dice esto el publicar.php

Código PHP:
Ver original
  1. <?php
  2. $nombre = $_POST['nombre'];
  3. $comentario = $_POST['comentario'];
  4. $fecha = date("j-n-Y h:i:s" );
  5. $fp=fopen("comentario.txt","a+" );
  6. $salida="

pero nose bien como ponerlo a $comentario = $_POST['comentario'];

eso es lo que te dije que no entendi
  #8 (permalink)  
Antiguo 04/11/2011, 16:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: filtrar etiquetas en sistema de comentarios

No, debes de usar una sola función, ya sea tu función filtrar, o htmlspecialchars (mi recomendación).

Somo usar una función es fácil, revisa este ejemplo:
Código PHP:
Ver original
  1. function incrementa($numero) {
  2.      return $numero + 1;
  3. }
  4.  
  5. $numero = 10;
  6. $numero = incrementa($numero);
  7. echo $numero; // imprime 11

Saludos.
  #9 (permalink)  
Antiguo 04/11/2011, 18:09
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 12 años, 7 meses
Puntos: 14
Respuesta: filtrar etiquetas en sistema de comentarios

es lo mismo que preguntar para que a esas etiquetas las procese como texto? o es algo diferente?
  #10 (permalink)  
Antiguo 04/11/2011, 20:04
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: filtrar etiquetas en sistema de comentarios

nose si ya esta tu duda totalmente clara pero como tu dijiste alex solo usa

y con eso lo tendras que sirve para quitar "el valor html" por desirlo de esta forma

saludos.
  #11 (permalink)  
Antiguo 04/11/2011, 20:51
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 12 años, 7 meses
Puntos: 14
Respuesta: filtrar etiquetas en sistema de comentarios

Cita:
Iniciado por espher Ver Mensaje
nose si ya esta tu duda totalmente clara pero como tu dijiste alex solo usa

y con eso lo tendras que sirve para quitar "el valor html" por desirlo de esta forma

saludos.
MUCHAS GRACIAS!!! ME RE SIRVIO!!! ahi te sumo el karma!!

muchas gracias

Etiquetas: filtrar, html
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 12:19.