Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/03/2015, 13:39
Avatar de NueveReinas
NueveReinas
 
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 8 meses
Puntos: 145
Muestra error pero registra la cuenta...

Hola gente;

recientemente he conseguido crear un registro de usuarios ( ), pero ahora tengo un problema a la hora de mostrar errores cuando la contraseña es menor a 6 caracteres, y es que me crea la cuenta (se crea en la DB).

¿Cómo evito que se cree la cuenta si la contraseña es < 6?
Solo me muestra el error, pero me crea la cuenta.

register.php


PHPMyAdmin


Os dejo cómo tengo estructurada la(s) páginas.

registro.php (donde está el formulario)

Código HTML:
<form method="POST" action="register.php" accept-charset="utf-8">

	<label for="signup_email">Email</label>
	<input type="email" name="signup_email" value="" id="signup_email" maxlength="50" size="30" required* />
	<label for="signup_password">Contraseña (debe contener más de 6 carácteres)</label>
	<input type="password" name="signup_password" value="" id="signup_password" maxlength="25" size="30"*required />
	<label for="signup_confirm_password">Confirmar Contraseña</label>
	<input type="password" name="confirm_password" value="" id="signup_confirm_password" maxlength="25" size="30" required />

	<input type="submit" name="signup_submit" value="Registrarse" class="btn">

</form> 
register.php (la llamada al "post" del form)

Código PHP:
<body>
<?php
// Carga la configuración
$config parse_ini_file('config.ini'); 

// Conexión con los datos del 'config.ini'
$connection mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']);

// Si la conexión falla, aparece el error
if($connection === false) {
    return 
mysqli_connect_error();
}

// Leer los datos del formulario
$email $_POST["signup_email"];
$password $_POST["signup_password"];

// Realiza la validación de la contraseña 
$error_message "";
if (
strlen($password) < 6) {
    
$error_message "La contraseña es demasiado corta. Por favor, introduzca al menos 6 caracteres";
}
else if ( 
$password != $_POST["signup_confirm_password"]) {
    
$error_message "Las contraseñas no coinciden. Por favor, inténtelo de nuevo";
};

if ( ! 
filter_var($emailFILTER_VALIDATE_EMAIL)) {
    
$error_message "Por favor, compruebe la dirección de email introducida";
};
 
// Genera una clave aleatoria
function generate_random_key() {
    
$chars "abcdefghijklmnopqrstuvwxyz0123456789";
 
    
$new_key "";
    for (
$i 0$i 32$i++) {
        
$new_key .= $chars[rand(0,35)];
    }
    return 
$new_key;
}

$random_key generate_random_key();

// Inserta los datos en la base
$stm $connection->prepare("insert into usuarios (email,password,activation_key,validated) " "values ( ? , ? , ? , 0 )");
$stm->bind_param("sss",$email,$password,$random_key);

if (!
$stm->execute()) {
    
// La inserción puede fallar si el usuario ya existía en la base de datos
    
$usuario_mal "Error, el usuario con el email ".$email." ya existe";
} else {
    
$usuario_ok "El usuario ha sido creado con el email ".$email;
}

$connection->close();

?>

<hr>

<p><?php echo $error_message ?>
<br>
<p><?php echo $usuario_ok ?></p>
<p><?php echo $usuario_mal ?></p>

</body>
Si veis algún otro error, por favor, resaltado.

Gracias muchas.