I tried resetting the password of an inactive user, who still hasn't verified his email, and when I send that form, it tells me to check the email to reset the password, but it shouldn't send the email because the user is inactive.
So how can I add another personalized message, if the user is not active, tell him, please activate your account, if you have trouble activating, resend the verification in the following form (a link).
if (empty($_POST['email'])) {
$email_require = 'Por favor, ingrese su correo electrónico';
} else {
if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['email'])) {
$email = $_POST['email'];
$active = 1;
$stmt = $con->prepare("SELECT email, first_name, email_code FROM users WHERE email=? OR username=? AND active=?");
$stmt->bind_param("ssi",$email,$username,$active);
$stmt->execute();
$stmt->store_result();
//como los datos que pasas en los inputs concuerdan con la Base de datos te tare 1 fila con lo datos que pediste
//es decir la condicion es verdadera
if ($stmt->num_rows>0) {
//aqui debes hacer el proceso de recuperacion
$stmt->bind_result($email_user, $first_name, $email_code);
$stmt->fetch();
echo '¡Por favor, revise su correo electrónico '.$email_user.' para obtener un enlace de confirmación para completar su restablecimiento de contraseña!';
$to = $email_user;
$subject = "Proceso para restablecer su contraseña";
$message_body = 'Hola '.$first_name.',
¡Has solicitado restablecimiento de contraseña!
Por favor, haga clic en este enlace para restablecer su contraseña.
http://example.com/login-system/reset.php?email='.urlencode($email).'&key='.$email_code.'';
mail($to, $subject, $message_body, 'From: [email protected]');
} else {
//como los campos que envio estan vacion, entonces la base de datos nunca retornara ninguna fila
//y es aqui donde captura el error
echo "¡Usuario con ese correo electrónico no existe!";
}
} else {
echo 'Tu dirección de correo electrónico no es válida';
}
}
}
SELECT
to retrieve the column[active]
.[active]
, evaluate its value.Here is the implemented solution:
In my experience I would reserve three fields in the users table for this case:
Then:
I hope it works for you, greetings.