Restablecer contraseña

Ingresa tu DNI. Tu contraseña quedará restablecida a tu DNI.

Después de restablecer, usa tu DNI como contraseña para iniciar sesión. Luego podrás cambiarla desde tu portal.
Volver al inicio de sesión
if (session_status() === PHP_SESSION_NONE) session_start(); require_once __DIR__ . '/../config/db.php'; $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://'; $host = $_SERVER['HTTP_HOST']; $base = BASE_URL; // Si ya hay sesión de estudiante activa → redirigir al portal if (!empty($_SESSION['usuario_id']) && (int)($_SESSION['id_rol'] ?? 0) === 9) { header('Location: ' . $base . '/pages/estudiante/tramites_posgrado.php'); exit; } $step = 1; $error = ''; $ok = ''; // Restaurar step 2 si había token en sesión if (empty($_POST) && !empty($_SESSION['reset_est_token']) && time() <= (int)($_SESSION['reset_est_exp'] ?? 0)) { $step = 2; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $paso = (int)($_POST['paso'] ?? 1); /* ── Paso 1: verificar identidad via API ─────────────────────────── */ if ($paso === 1) { $dni = trim($_POST['dni'] ?? ''); $fecha = trim($_POST['fecha_nacimiento'] ?? ''); if (!preg_match('/^\d{8,12}$/', $dni)) { $error = 'DNI inválido (solo dígitos, 8 a 12 caracteres).'; } elseif (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $fecha)) { $error = 'Formato de fecha inválido.'; } else { $bearer = 'YChjwSaqfOVA9IxFTFU6Cnk69jJQGdFPxeWncusL'; $url = 'https://api.unheval.edu.pe/api/v1/consulta-alumno-posgrado' . '?search=' . urlencode($dni) . '&type=alumno'; $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $bearer, 'Accept: application/json'], CURLOPT_SSL_VERIFYPEER => false, CURLOPT_TIMEOUT => 20, ]); $resp = curl_exec($ch); $http = curl_getinfo($ch, CURLINFO_HTTP_CODE); $cerr = curl_error($ch); curl_close($ch); if ($cerr || $http !== 200) { $error = 'No se pudo conectar con el sistema UNHEVAL. Inténtalo más tarde.'; } else { $data = json_decode($resp, true); if (!isset($data['cod_respuesta']) || $data['cod_respuesta'] !== '10001' || empty($data['datos'])) { $error = 'DNI no encontrado en el registro UNHEVAL.'; } else { $datos = $data['datos']; if (!isset($datos[0])) $datos = [$datos]; $alumno = null; foreach ($datos as $d) { if (trim((string)($d['Nro_Doc'] ?? '')) === $dni) { $alumno = $d; break; } } if (!$alumno) $alumno = $datos[0]; $fn_api = trim((string)($alumno['fecha_nacimiento'] ?? '')); if (preg_match('/^(\d{2})\/(\d{2})\/(\d{4})$/', $fn_api, $m)) { $fn_api = $m[3] . '-' . $m[2] . '-' . $m[1]; } else { $fn_api = substr($fn_api, 0, 10); } if ($fn_api === '' || $fecha !== $fn_api) { $error = 'Fecha de nacimiento incorrecta.'; } else { // Verificar que el usuario exista en la DB $db = getDB(); $stU = $db->prepare("SELECT id_usuario FROM usuarios WHERE dni = ? AND id_rol = 9 LIMIT 1"); $stU->execute([$dni]); if (!$stU->fetch()) { $error = 'No tienes cuenta activa en el sistema. Inicia sesión primero con tu fecha de nacimiento para crearla.'; } else { $_SESSION['reset_est_dni'] = $dni; $_SESSION['reset_est_token'] = bin2hex(random_bytes(16)); $_SESSION['reset_est_exp'] = time() + 900; // 15 min $step = 2; } } } } } /* ── Paso 2: guardar nueva contraseña ────────────────────────────── */ } elseif ($paso === 2) { if (empty($_SESSION['reset_est_token']) || empty($_SESSION['reset_est_dni']) || time() > (int)($_SESSION['reset_est_exp'] ?? 0)) { $error = 'La sesión de restablecimiento expiró. Inicia el proceso nuevamente.'; $step = 1; unset($_SESSION['reset_est_token'], $_SESSION['reset_est_dni'], $_SESSION['reset_est_exp']); } else { $step = 2; // keep on step 2 while showing errors $nueva = $_POST['nueva_clave'] ?? ''; $confirma = $_POST['confirmar_clave'] ?? ''; if (strlen($nueva) < 8) { $error = 'La contraseña debe tener al menos 8 caracteres.'; } elseif ($nueva !== $confirma) { $error = 'Las contraseñas no coinciden.'; } else { $hash = password_hash($nueva, PASSWORD_BCRYPT); $dni_reset = $_SESSION['reset_est_dni']; $db = getDB(); $db->prepare( "UPDATE usuarios SET clave=?, fecha_modificacion=NOW(), responsable_modificacion='RESET_ESTUDIANTE' WHERE dni=? AND id_rol=9" )->execute([$hash, $dni_reset]); unset($_SESSION['reset_est_token'], $_SESSION['reset_est_dni'], $_SESSION['reset_est_exp']); $ok = 'Contraseña restablecida correctamente. Ya puedes iniciar sesión con tu nueva contraseña.'; $step = 1; // show success on step 1 screen } } } } ?> Restablecer Contraseña | UPG
Volver al inicio de sesión