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.
Para eso esta:
if(eregi('€', $_GET['frase'])){
echo "No valido, contiene el caracter €";
}else{
// tu code
}
Informate en php.net de la función EREGI.
Doble post: lo hago para que me leas esto:
Tambien puedes usar expresiones regulares :P
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.
Lo voy a probar...muchas gracias.
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.
Tenés errores en los condicionales.. :rolleyes:
else { if (ereg("^[a-zA-Z0-9\-_]{4}$", $usuario)) {}
Esa linea, por ejemplo...
Debes anidar los If-Else o usar switch
Saludos
Unsigned tiene razón, la sintax del else if es:
}elseif(...){
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.
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 ...
Hola,
Usa mejor preg_match, PCRE (http://es.php.net/PCRE) está mucho mejor.
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!
Esta muy bueno, es parecido al eregi o ereg.
Hola,
Sí pero es más flexible y mucho más rápido usar PCRE.
Saludos!