Foros del Web » Programando para Internet » PHP »

Usuario: Sólo números, letras y guiones bajos al inscribirse!

Estas en el tema de Usuario: Sólo números, letras y guiones bajos al inscribirse! en el foro de PHP en Foros del Web. Saludos amigos, debo hacer que un usuario al registrarse solo y unicamente envie en ese campo: números, letras y guiones bajos , nada de caracteres ...
  #1 (permalink)  
Antiguo 16/07/2007, 22:56
 
Fecha de Ingreso: julio-2007
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Usuario: Sólo números, letras y guiones bajos al inscribirse!

Saludos amigos,

debo hacer que un usuario al registrarse solo y unicamente envie en ese

campo: números, letras y guiones bajos
, nada de caracteres especiales,

al principio pense en algo como esto:

Código PHP:
function limpiarCampo($usuario)
 
      {
 
          
$fuchi = array('‘','\\','<','>',,);
 
          
$usuario str_replace($fuchi""$usuario);
 
          return 
$usuario;

      } 
luego termino de limpiar con trim():

Código PHP:
trim($HTTP_POST_VARS["usuario"]) 

y lo metia al campo respectivo asi:

Código PHP:
$sql "INSERT INTO usuarios (usuario) VALUES (";
$sql .= "'".limpiarCampo($HTTP_POST_VARS["usuario"])."'"
pero obviamente, no controlo los que faltan: ?, &, %, $, etc.

hay algo que me solucione el problema de una manera mas limpia y corta? debo especificar todos los caracteres de la tabla ascii?

gracias por los comentarios
  #2 (permalink)  
Antiguo 16/07/2007, 23:06
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 3
Re: Usuario: Sólo números, letras y guiones bajos al inscribirse!

Bueno... no sé si funcione en PHP pero... y si en vez de escribir todo el código ASCII no limitas sólo para los caracteres que quieres?

Un string es un arreglo, así que pudieras chequear cada caracter verificando si éste pertenece al rango específico o no, haciendo un "break" cuando se rompa la regla, algo así como:

Código:
if((login >= 'a' AND login <= 'z)  OR (login >= 'A' AND login <= 'Z')
OR (login >= '0' AND login <= '9') OR (login == '_'))
Lo sé, se ve engorroso. Eso "supuestamente" es C (tengo tiempo que no uso ese lenguaje y se me están olvidando algunas cosillas), pero PHP es muy similar. En C se podían comparar caracteres empleando sus correspondientes valores ASCII (creo que se usaba una cabecera especial). Quizás en PHP también exista esa posibilidad. Si es así, bueno, esperemos a un experto.

Saludos.
  #3 (permalink)  
Antiguo 16/07/2007, 23:35
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 16 años, 6 meses
Puntos: 60
Re: Usuario: Sólo números, letras y guiones bajos al inscribirse!

Lo que buscas se llaman Expresiones regulares basta con comparar tu cadena.. y especificar el parametro o rango de caracteres que debe de tener la cadena..


ejemplo..

Código PHP:
<?php
$cadena 
"cadena59%&/($·";
if(
ereg("[\-_a-zA-Z0-9]$",$cadena))
    {
    echo 
"Es valida";
    } else
        {
        echo 
"No es valida";
        }
?>
En el ejemplo anterior dentro de los [] especificas que caracteres seran validos.. o puede contener tu cadena.. en este ejemplo yo puse que es valido usar.. "-", "_", letras de la "a" a la "z" minusculas y mayusculas y los numeros del 0 al 9.. y el signo de pesos dice que ahi termina lo que queremos validar.. aunque..

De hecho de esta manera puedes controlar muchas cosas.. como por ejemplo..

1.- que inicie con una letra..
2.- que termine con una letra..
3.- que al menos tenga 2 vocales..
4.- etc etc :D
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #4 (permalink)  
Antiguo 17/07/2007, 11:22
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 3
Re: Usuario: Sólo números, letras y guiones bajos al inscribirse!

Información útil. Gracias


Otra duda: Tengo un formulario donde te piden una cédula (identificación). Esta variable se envía como INT. Hay alguna forma de que, si introduces otro caracter, te de un mensaje de error? Pudiera poner un if/else, pero no haría todo lo que quiesiera, me explico:

Si es un número, y está en la base de datos, se habilita la sesión.
Si es un número, pero no está en la base de datos, se envía un mensaje indicando que el usuario no está registrado.
Si se introduce otro caracter (letra, símbolo) que genere un mensaje de error diciendo que "no se pueden introducir caracters especiales" o algo así...

Última edición por ghosthead-nebula; 17/07/2007 a las 11:41
  #5 (permalink)  
Antiguo 17/07/2007, 12:00
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 16 años, 6 meses
Puntos: 60
Re: Usuario: Sólo números, letras y guiones bajos al inscribirse!

Cita:
Iniciado por ghosthead-nebula Ver Mensaje
Información útil. Gracias


Otra duda: Tengo un formulario donde te piden una cédula (identificación). Esta variable se envía como INT. Hay alguna forma de que, si introduces otro caracter, te de un mensaje de error? Pudiera poner un if/else, pero no haría todo lo que quiesiera, me explico:

Si es un número, y está en la base de datos, se habilita la sesión.
Si es un número, pero no está en la base de datos, se envía un mensaje indicando que el usuario no está registrado.
Si se introduce otro caracter (letra, símbolo) que genere un mensaje de error diciendo que "no se pueden introducir caracters especiales" o algo así...

Hola, creo que si necesitas saber si es un numero Entero.. La expresion regular puede ser util :), aunque podrias tambien aplicar y usar la funcion.

is_numeric();

http://www.php.net/manual/es/function.is-numeric.php

Pero asi como lo describes.. yo haria algo como..

Código PHP:

//primero necesitas saber si es numero.. si eso se cumple checas en la base de datos si no no tiene caso..
//usar POST o GET 

$miEntero $_GET['entero'];

if(
ereg("[0-9]$",$miEntero))
    {
          
//aqui sabes que es numero Entero puedes checar en la DB
          
if(existe)
                    {
                       
//inicias sesión
                     
}else
                               {
                                  echo 
"No estas registrado en la DB";
                                }
    } else
        {
        echo 
"No puedes introducir caracteres especiales";
        }
?> 
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #6 (permalink)  
Antiguo 17/07/2007, 12:58
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 3
Re: Usuario: Sólo números, letras y guiones bajos al inscribirse!

Gracias =)
  #7 (permalink)  
Antiguo 17/07/2007, 21:03
 
Fecha de Ingreso: julio-2007
Mensajes: 3
Antigüedad: 12 años, 5 meses
Puntos: 0
Re: Usuario: Sólo números, letras y guiones bajos al inscribirse!

bueno, no me queda mas que agradecerte :P

de esta forma me ahorro mucho codigo =P
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 20:15.