prepare("SELECT id_usuario FROM usuarios WHERE email = ?"); $stmt->bind_param("s", $email); $stmt->execute(); if ($stmt->get_result()->num_rows > 0) { $codigo = rand(100000, 999999); $update = $conexion->prepare("UPDATE usuarios SET reset_codigo = ?, reset_expiracion = DATE_ADD(NOW(), INTERVAL 15 MINUTE) WHERE email = ?"); $update->bind_param("is", $codigo, $email); if ($update->execute()) { $apiKey = RESEND_API_KEY; $datos_mail = [ "from" => "La Pecosa ", "to" => [$email], "subject" => "Código de Recuperación - La Pecosa", "html" => "

Hola!

Solicitaste restablecer tu contraseña en La Pecosa.

$codigo

Este código vence en 15 minutos.

" ]; $ch = curl_init('https://api.resend.com/emails'); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $apiKey, 'Content-Type: application/json']); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($datos_mail)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $respuesta = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code == 200 || $http_code == 201) { $_SESSION['email_recuperacion'] = $email; $tipo_mensaje = "exito"; $mensaje = "¡Código enviado! Revisá tu casilla de correo."; $paso = 2; escribir_log("Recuperación: Código enviado correctamente a $email"); } else { $tipo_mensaje = "error"; $mensaje = "Error al enviar el mail."; escribir_log("Error mail: Falló Resend para $email (HTTP $http_code)"); } } } else { escribir_log("Alerta: Intento de recuperación para email NO registrado: $email"); $tipo_mensaje = "exito"; $mensaje = "Si el correo es correcto, recibirás un código."; } } if (isset($_POST['btn_paso2'])) { $codigo_ingresado = $_POST['codigo']; $email = $_SESSION['email_recuperacion']; $stmt = $conexion->prepare("SELECT id_usuario FROM usuarios WHERE email = ? AND reset_codigo = ? AND reset_expiracion > NOW()"); $stmt->bind_param("si", $email, $codigo_ingresado); $stmt->execute(); if ($stmt->get_result()->num_rows > 0) { $_SESSION['codigo_verificado'] = true; $paso = 3; escribir_log("Recuperación: Código verificado con éxito para $email"); } else { $tipo_mensaje = "error"; $mensaje = "Código incorrecto o expirado."; escribir_log("Alerta: Código INCORRECTO ingresado para $email"); } } if (isset($_POST['btn_paso3'])) { $pass = $_POST['password']; $confirm = $_POST['confirm_password']; $email = $_SESSION['email_recuperacion']; if ($pass === $confirm) { $password_hash = password_hash($pass, PASSWORD_BCRYPT); $update = $conexion->prepare("UPDATE usuarios SET password = ?, reset_codigo = NULL, reset_expiracion = NULL WHERE email = ?"); $update->bind_param("ss", $password_hash, $email); if ($update->execute()) { escribir_log("Recuperación exitosa: Contraseña actualizada para $email"); session_destroy(); header("Location: login.php?mensaje=actualizada"); exit(); } } else { $tipo_mensaje = "error"; $mensaje = "Las contraseñas no coinciden."; } } } ?> Recuperar Contraseña - La Pecosa

Olvidé mi clave

Verificar Código

Ingresá el código enviado a tu mail.

Nueva Contraseña

Volver al inicio