1
<?php
class ValidadorRegistro
{
// Política: Mínimo 8 caracteres, 1 mayúscula, 1 minúscula, 1 número y 1 símbolo (@$!%*?&#)
public static function esPasswordFuerte(string $password): bool
{
$patron = '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&#])[A-Za-z\d@$!%*?&#]{8,64}$/';
return preg_match($patron, $password) === 1;
}
// Política: Correo corporativo exclusivo (@kilopolis.com o subdominios)
public static function esEmailCorporativo(string $email): bool
{
$patron = '/^[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\.)*kilopolis\.com$/i';
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false
&& preg_match($patron, $email) === 1;
}
}
$passwordsPrueba = [
'MiClaveSegura2026!' => 'Válida (cumple todos los requisitos)',
'password123' => 'Falla (no tiene mayúscula ni símbolo)',
'ADMIN2026!' => 'Falla (no tiene minúsculas)',
'Ab1!' => 'Falla (tiene menos de 8 caracteres)',
];
$emailsPrueba = [
'[email protected]' => 'Válido (dominio corporativo)',
'[email protected]' => 'Válido (subdominio corporativo)',
'[email protected]' => 'Rechazado (dominio genérico)',
'correo_invalido_sin_arroba' => 'Rechazado (formato roto)',
];
echo "<div style='font-family:system-ui; max-width:640px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>🛡️ Suite de Validación Corporativa</h3>";
echo "<h4 style='color:#1e293b; margin-bottom:8px;'>1. Auditoría de Contraseñas Fuertes:</h4>";
foreach ($passwordsPrueba as $pwd => $desc) {
$ok = ValidadorRegistro::esPasswordFuerte($pwd);
$color = $ok ? '#059669' : '#dc2626';
$icono = $ok ? '✅' : '❌';
echo "<div style='display:flex; justify-content:space-between; font-size:13px; background:#f8fafc; border:1px solid #e2e8f0; padding:8px 12px; margin-bottom:6px; border-radius:6px;'>";
echo " <span><code>" . htmlspecialchars($pwd) . "</code> <small style='color:#64748b;'>($desc)</small></span>";
echo " <strong style='color:$color;'>$icono " . ($ok ? 'APROBADA' : 'INSEGURA') . "</strong>";
echo "</div>";
}
echo "<h4 style='color:#1e293b; margin:16px 0 8px 0;'>2. Validación de Emails Corporativos:</h4>";
foreach ($emailsPrueba as $email => $desc) {
$ok = ValidadorRegistro::esEmailCorporativo($email);
$color = $ok ? '#059669' : '#dc2626';
$icono = $ok ? '✅' : '❌';
echo "<div style='display:flex; justify-content:space-between; font-size:13px; background:#f8fafc; border:1px solid #e2e8f0; padding:8px 12px; margin-bottom:6px; border-radius:6px;'>";
echo " <span><code>" . htmlspecialchars($email) . "</code> <small style='color:#64748b;'>($desc)</small></span>";
echo " <strong style='color:$color;'>$icono " . ($ok ? 'ACEPTADO' : 'RECHAZADO') . "</strong>";
echo "</div>";
}
echo "</div>";
Haz clic para editar este código