Alguien conoce una funcion haci

Iniciado por mark182, 26 Julio 2009, 23:05 PM

0 Miembros y 1 Visitante están viendo este tema.

mark182

Hola que tal?

Recien empiezo con la programacion en PHP y la verdad que hay cosas que nose todavia, estoy haciendo un formulario y quiero controlar que el usuario no ingrese espacios en blancos o algunos caracteres, etc. Quiero que lo unico que pueden poner sean letras con numeros, o letras solas o numeros solos unicamente.
Si el usuario llega a poner algo no permitido, que lo rechaze y vuelva a la pagina de registracion pero con el resto de los datos correctos ya puestos, y un mensaje de error en donde se haya equivocado el usuario. Espero que no sea mucho molestia. Se los agradezco mucho.

Erik#

#1
Para eso esta:

Código (php) [Seleccionar]
if(eregi('€', $_GET['frase'])){
echo "No valido, contiene el caracter €";
}else{
// tu code
}


Informate en php.net de la función EREGI.

Erik#

Doble post: lo hago para que me leas esto:

Tambien puedes usar expresiones regulares :P

Código (php) [Seleccionar]
if(eregi(^[A-Za-z0-9]{1,}$,$_GET['palabra'])){
echo "Correcto";
}else{
echo "Incorrecto";
}


En el eregi solo permitimos de la A a la Z y del 0 al 9, minusculas y mayusculas y por lo menos debe tener 1 caracter la frase.
Donde $_GET[] introduce tu $_POST y el nombre. Y donde correcto e incorrecto lo que tu quieres hacer.

mark182

Lo voy a probar...muchas gracias.

mark182

Mira...lo eh provado pero funciona a medias. Lo explico con la contraseña me funciona, osea, si el usuario pone un espacio a algun caracter que no sea letra o numero tira el mensaje de error. Pero con el usuario no me funciona, ya sea que ponga de forma correcta o con simbolos no permitidos, me sigue tirando el mensaje de error. Les dejo todo el codigo completo para que vean donde puede estar el error.


$numero=strlen($usuario);

if ($numero < 4){
echo "El nombre de usuario $usuario no es válido.
Debe contener como mínimo 4 caracateres<br>";}

   
else { if (ereg("^[a-zA-Z0-9\-_]{4}$", $usuario)) {}
else {
   echo "El nombre de Usuario es incorrecto. Solo se permiten letras, números, - y _<br>";}}




$numero=strlen($pass);
$numero2=strlen($cpass);

if (($numero < 6) or ($numero2 < 6)){
echo "No ha ingresado la Contraseña correctamente. Debé contener
6 caracteres como mínimo y 8 como máximo<br>";}
      

else { if (ereg("^[a-zA-Z0-9]{6,8}$", $pass)) {}
else {
   echo "La Contraseña es incorrecta. Solo se permiten letras, números, - y _<br>";}} 


Que pueda estar pasando?  Gracias.

[u]nsigned

Tenés errores en los condicionales.. :rolleyes:

Código (php) [Seleccionar]
else { if (ereg("^[a-zA-Z0-9\-_]{4}$", $usuario)) {}

Esa linea, por ejemplo...

Debes anidar los If-Else o usar switch

Saludos

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Erik#

Unsigned tiene razón, la sintax del else if es:

Código (php) [Seleccionar]
}elseif(...){

mark182

pero justo abajo esta el else de ese if, igual ustedes dicen de poner elseif? Disculpen es que estoy medio acostumbrado al lenguaje C jeje. Lo provare, gracias.

Erik#

Cita de: mark182 en 27 Julio 2009, 14:00 PM
pero justo abajo esta el else de ese if, igual ustedes dicen de poner elseif? Disculpen es que estoy medio acostumbrado al lenguaje C jeje. Lo provare, gracias.

El else if no se separa así: else } if ...

SnakeDrak

#9
Hola,

Usa mejor preg_match, PCRE está mucho mejor.

Código (php) [Seleccionar]

if(!preg_match('/^[a-zA-Z!\?\d_\-]{4,23}$/',$_POST['user'])) // Comprobamos carácteres
$error .= "* El usuario contiene caracteres no permitidos<br/>";
else noerror;


Ese es un ejemplo para comprobar caracteres ingleses del alfabeto inglés con ?, números, -, _ e ! incorporados que ha sido pasado por POST en user, es decir que si contiene algún caracter que no esté en ese alfabeto dará error, por ejemplo á.

Suerte!