Foros del Web » Programando para Internet » PHP »

como evitar el spam en mi formulario

Estas en el tema de como evitar el spam en mi formulario en el foro de PHP en Foros del Web. hola amigos ando aburrido con un formspam que cada rato pone viagra y viagra hay alguna forma de que si se pone determinada palabra en ...
  #1 (permalink)  
Antiguo 25/07/2011, 18:15
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
como evitar el spam en mi formulario

hola amigos ando aburrido con un formspam que cada rato pone viagra y viagra hay alguna forma de que si se pone determinada palabra en este caso viagra o sex q no se haga el insert ??

espero me entiendan y me den su punto de vista
gracias
  #2 (permalink)  
Antiguo 25/07/2011, 18:22
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: como evitar el spam en mi formulario

probastes con algun captcha ?
  #3 (permalink)  
Antiguo 25/07/2011, 18:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como evitar el spam en mi formulario

Podrías tener alguna lista de palabras restringidas, esa parte la sacas como quieras.

Luego de ahí puedes usar alguna de las funciones de cadenas para verificar si se encuentra la palabra en el texto.

Un ejemplo simple seria:
Código PHP:
<?php
$palabrasRestringidas 
= array('viagra''palabra');
$texto "Esta oracion contiene la palabra viagra";

foreach(
$palabrasRestringida as $palabra) {
  if(
stripos($palabra$texto) > -1) {
    
//La palabra se encuentra en el texto
  
}
}
?>
Probablemente haya alguna forma mas eficiente pero no he podido verificar todas las funciones de cadenas a ver si se podria usar alguna otra (aparte de esa o strstr)
  #4 (permalink)  
Antiguo 25/07/2011, 19:14
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como evitar el spam en mi formulario

akrapal ps estoy trabjando en ellos pero me ha dado algo de palo pero la idea es implementarlo por que estoy aburrido cada rato en el dia estar borrando esos molestos spam , fijate q encontre este capctha pero no he podido implentarlo como disen no nada :( http://www.9lessons.info/2010/07/goo...-with-php.html

si me puedes hechar la mano te agradesco


Ronruby esta bueno tu punto voy trabajarlo tambien ps me gustaria tener un sistema ser como la lista de las palabras negra jeje


fijate el tipo de aviso que ponen el spam


" ,
Viagra discount
, 7980,
Cheap cialis
, hpyln,
Levitra generic
, ofoz,
" y eso esta con un link httpwww.usawwwmeds.com
  #5 (permalink)  
Antiguo 25/07/2011, 19:21
 
Fecha de Ingreso: mayo-2010
Mensajes: 128
Antigüedad: 13 años, 10 meses
Puntos: 13
Respuesta: como evitar el spam en mi formulario

¿Habeis porbado este método? Parece una chorada, pero quien sabe:

http://www.ribosomatic.com/articulos...-spam-con-css/

Y esto también parece una chorrada pero podría funcionar:

http://www.alzado.org/articulo.php?id_art=561
  #6 (permalink)  
Antiguo 25/07/2011, 19:35
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como evitar el spam en mi formulario

noo ese spam sigue jodiendo

",
Viagra online
, >,
Order cheap viagra
, 631,
Generic cialis
, 77340," sigue enviando chorradas de basura

q hago pa frenar eso

amigos damen una mano
  #7 (permalink)  
Antiguo 25/07/2011, 19:39
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: como evitar el spam en mi formulario

Intenta así:

Código HTML:
Ver original
  1. <form method="post" action="enviar.php">
  2.      <label for="nombre">Nombre:</label>
  3.      <input name="nombre" value="" size="20" />
  4.      <label for="email">Email:</label>
  5.      <input name="email" value="" size="25" />
  6.  
  7.      <label for="verificacion" class="verif">¡Si ves esto, no llenes el siguiente campo!</label>
  8.      <input name="verificacion" class="verif" />
  9.  
  10.      <input type="submit" value="Enviar" />
  11. </form

Código CSS:
Ver original
  1. .verif{ display: none; }

Código PHP:
Ver original
  1. <?php
  2. if ($_POST['verificacion'] != ""){
  3.     // Es un SPAMbot
  4.     exit();
  5. }else{
  6.     // Es un usuario real, proceder a enviar el formulario.
  7. }
  8. ?>

Otros métodos de evitar el spam

http://www.enelnombredetux.com/article.php?article=spam
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 25/07/2011 a las 19:46
  #8 (permalink)  
Antiguo 25/07/2011, 20:49
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como evitar el spam en mi formulario

andresdzphp
el codigo php va en enviar.php??


Código PHP:
Código PHP:
Ver original
  1. <?php
  2. if ($_POST['verificacion'] != ""){
  3. // Es un SPAMbot
  4. exit();
  5. }else{
  6. // Es un usuario real, proceder a enviar el formulario.
  7. }
  8. ?>
  #9 (permalink)  
Antiguo 25/07/2011, 20:58
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: como evitar el spam en mi formulario

Cita:
Iniciado por charlescuellar Ver Mensaje
andresdzphp
el codigo php va en enviar.php??


Código PHP:
Código PHP:
Ver original
  1. <?php
  2. if ($_POST['verificacion'] != ""){
  3. // Es un SPAMbot
  4. exit();
  5. }else{
  6. // Es un usuario real, proceder a enviar el formulario.
  7. }
  8. ?>
Si antes de enviar el formulario
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 25/07/2011, 21:21
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: como evitar el spam en mi formulario

Y por qué no usar ésto? Está en la misma zona de aportes y previene justo lo que necesitas
http://www.forosdelweb.com/f18/aport...i-spam-575520/
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #11 (permalink)  
Antiguo 25/07/2011, 23:34
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como evitar el spam en mi formulario

Sourcegeek gracias por el dato voy a checarlo
  #12 (permalink)  
Antiguo 26/07/2011, 10:02
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
como puedo tener alguna lista de palabras restringidas

como puedo tener alguna lista de palabras restringidas y Luego de ahí poder usar alguna de las funciones de cadenas para verificar si se encuentra la palabra en el texto.

Código PHP:
<?php
$palabrasRestringidas 
= array('viagra''palabra');
$texto $_POST["clasificado"];

foreach(
$palabrasRestringida as $palabra) {
  if(
stripos($palabra$texto) > -1) {
    
//La palabra se encuentra en el texto
  
}
}
?>
Probablemente haya alguna forma mas eficiente pero no he podido verificar todas las funciones de cadenas a ver si se podria usar alguna otra (aparte de esa o strstr)

quisiera q me dieran la mano con esa o con otra

ps esta me da error en el foreach
gracias
  #13 (permalink)  
Antiguo 26/07/2011, 10:05
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: como puedo tener alguna lista de palabras restringidas

puedes usar expresiones regulares.

para ser sincero, es realmente inútil implementar este tipo de filtros para evitar palabras, o mejor dicho "malas palabras", los usuarios siempre encontrarán el modo de violentarlas, cambiando letras por números, sarcasmo, frases de doble sentido, etc., de allí la necesidad de moderadores en un foro.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #14 (permalink)  
Antiguo 26/07/2011, 10:19
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como puedo tener alguna lista de palabras restringidas

maycolalvarez gracias por contestar

como que expresion regular podria trabajar??
  #15 (permalink)  
Antiguo 26/07/2011, 10:29
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como evitar el spam en mi formulario

me gusta la idea de Ronruby de restringir palabras pero tratado con el codigo de ejemplo q puso y no da de un error

Warning: Invalid argument supplied for foreach() in /home//public_html//enviar.php on line 5

y la linea 5 es esto:


foreach($palabrasRestringida as $palabra) {

que le faltaria??

asi lo tengo yo

Código PHP:
Ver original
  1. <?php
  2. $palabrasRestringidas = array('viagra', 'sexo');
  3. echo $texto = $_POST["clasificado"];
  4.  
  5. foreach($palabrasRestringida as $palabra) {
  6.   if(stripos($palabra, $texto) > -1) {
  7.     //La palabra se encuentra en el texto
  8.  
  9.   }
  10. }
  11. ?>
  #16 (permalink)  
Antiguo 26/07/2011, 10:46
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: como evitar el spam en mi formulario

Cita:
Iniciado por charlescuellar Ver Mensaje
me gusta la idea de Ronruby de restringir palabras pero tratado con el codigo de ejemplo q puso y no da de un error

Warning: Invalid argument supplied for foreach() in /home//public_html//enviar.php on line 5

y la linea 5 es esto:


foreach($palabrasRestringida as $palabra) {

que le faltaria??

asi lo tengo yo

<?php
$palabrasRestringidas = array('viagra', 'sexo');
echo $texto = $_POST["clasificado"];

foreach($palabrasRestringidas as $palabra) {
if(stripos($palabra, $texto) > -1) {
//La palabra se encuentra en el texto

}
}
?>
Te faltaba una letra :|
  #17 (permalink)  
Antiguo 26/07/2011, 10:51
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como evitar el spam en mi formulario

si la letra "S" :) ya se quito el error pero no realiza la funcion


Código PHP:
Ver original
  1. <?php
  2. $palabrasRestringidas = array('viagra', 'sexo');
  3.  $texto = $_POST["clasificado"];
  4.  
  5. foreach($palabrasRestringidas as $palabra) {
  6.     if(stripos($palabra, $texto) > -1) {
  7.     echo "La palabra se encuentra en el texto
  8. "; 
  9.    
  10.   }
  11. }
  12. ?>
que me faltaria
gracias
  #18 (permalink)  
Antiguo 26/07/2011, 10:54
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: como evitar el spam en mi formulario

Podrías hacer algo más o menos a esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. function buscarPalabras($arr, $texto) {
  4.    
  5.     foreach ($arr as $a) {
  6.         if (preg_match("/$a/", $texto, $con)) {
  7.            
  8.             if (count($con) > 0) {
  9.                 return true;
  10.             } else {
  11.                 return false;
  12.             }
  13.            
  14.            }
  15.     }
  16.    
  17. }
  18.  
  19. $arr = array('Viagra', 'Spam');
  20. $texto = 'Este texto no tiene palabras';
  21.  
  22.  
  23. if (buscarPalabras($arr, $texto)) {
  24.     echo 'Se encontraron palabras';
  25. } else {
  26.     echo 'No se encontro ninguna palabra del array';
  27. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #19 (permalink)  
Antiguo 26/07/2011, 10:55
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: como evitar el spam en mi formulario

Cita:
Iniciado por charlescuellar Ver Mensaje
si la letra "S" :) ya se quito el error pero no realiza la funcion


Código PHP:
Ver original
  1. <?php
  2. $palabrasRestringidas = array('viagra', 'sexo');
  3.  $texto = $_POST["clasificado"];
  4.  
  5. foreach($palabrasRestringidas as $palabra) {
  6.     if(stripos($palabra, $texto) > -1) {
  7.     echo "La palabra se encuentra en el texto
  8. "; 
  9.    
  10.   }
  11. }
  12. ?>
que me faltaria
gracias
No lo vi con atencion antes x_x, tienes los parametros de stripos() invertidos :|
  #20 (permalink)  
Antiguo 26/07/2011, 10:59
 
Fecha de Ingreso: abril-2008
Mensajes: 310
Antigüedad: 16 años
Puntos: 4
Respuesta: como evitar el spam en mi formulario

ooooh muchas gracias amigo me sacaste de un rompe bolas gracias karma jeje

Etiquetas: lista, palabras, spam, formulario
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 05:25.