Foros del Web » Programando para Internet » PHP »

Filtrar Nicks groseros

Estas en el tema de Filtrar Nicks groseros en el foro de PHP en Foros del Web. Tengo esta instrucción para filtar un nick malsonante: if ($nick == "caca"){include('includes-chat/nicknovale.inc');} El problema es que si el usuario escribe Caca o CACA, el filtro ...
  #1 (permalink)  
Antiguo 17/12/2005, 17:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 149
Antigüedad: 13 años
Puntos: 0
Filtrar Nicks groseros

Tengo esta instrucción para filtar un nick malsonante:

if ($nick == "caca"){include('includes-chat/nicknovale.inc');}

El problema es que si el usuario escribe Caca o CACA, el filtro lo deja pasar. ¿Hay alguna forma fácil de solucionarlo?

Gracias
  #2 (permalink)  
Antiguo 17/12/2005, 17:20
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
utiliza EREGI() que no es "case sensitive"

if (eregi("caca",$nick)) { include.... }

Lo que podrías hacer es crear un ARRAY con todos los nicks "prohibidos" y luego comprar todos, así no tienes que usar miles de if-elseif-else

Otra forma sería incluir MANUALMENTE todos los nicks prohibidos en la base de datos, así ya nadie los podrá utilizar...
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 18/12/2005, 17:49
 
Fecha de Ingreso: diciembre-2004
Mensajes: 149
Antigüedad: 13 años
Puntos: 0
Hola FuLaNo:

Gracias probaré eregi a ver que tal va. Sobre lo del arrary .... Ahí me has dado, aun no he llegado a ello. Supongo que no será dificil, pero no tengo ni idea. ¿Podrás facilitarme un ejemplo sencillo de array y del comando que lo ejecuta para filtrar los nicks no deseados?

Muchas gracias. Tu ayuda me será muy útil.
  #4 (permalink)  
Antiguo 18/12/2005, 18:46
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Esta podría ser una manera de hacerlo:

Código PHP:
<?php
function NICKS($var) {
  
$nicks = array(
    
'marica' => '[œ]',
    
'puto' => '[œ]',
    
'gay' => '[œ]',
    
'otra_Cosa' => '[œ]',
    
'otraMas' => '[œ]',
    
'elultimo' => '[œ]'
  
);
  
$array array_keys($nicks);
  
$finaltext eregi_replace($array,$nicks,$var);
  
  if (
eregi("[œ]",$finaltext) { 
    return 
false;
  } 
  else { 
    return 
true;
  }
?>
Entonces en tu sistema usas:

Código PHP:
if (NICKS($_POST['nick'])) { echo 'nick correcto'; } else { echo 'nick incorrecto'; } 
Espero que sirva, no lo he probado pero deberia funcionar, fijate que utilizo el caracter "œ" para reemplazar las "malas palabras" ya que es un caracter no-habitual... puedes cambiarlo por cualquier pero, obviamente, no tendrá que usarse en un nick...

PD: Ten en cuenta que el ultimo parametro (no se si esta bien dicho parametro) del array no lleva COMA al final: 'elultimo' => '[œ]' en cambio los otros si 'otraMas' => '[œ]', de lo contrario te dara error y no sabras porque :p
__________________
I Love Programming...
  #5 (permalink)  
Antiguo 19/12/2005, 01:28
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
al hacer un
if (NICKS($_POST['nick']))
estas recibiendo del formulario... una pregunta.. el formulario puede mandar a la misma pagina, pero a una funcion?

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 11:18.