Cita de: #!drvy en 12 Febrero 2021, 23:54 PM
Puesto que tienes una serie de expresiones regulares, realmente lo que te interesa es que estas formen parte de un array (u objeto) que puedas recorrer. Así no tienes declarar una variable y/o hacer un IF por cada una.Código (php) [Seleccionar]<?php
$password = 'testAb9!';
$security = 0;
$rules = array(
'lower' => '[a-z]',
'upper' => '[A-Z]',
'symbol' => '([!,%,&,@,#,$,^,*,?,_,~])',
'number' => '[0-9]'
);
foreach ($rules as $rule) {
if (preg_match($rule, $password) > 0) {
$security++;
}
}
var_dump($security);
Tambien puedes hacerlo con array_reduce:Código (php) [Seleccionar]$security = array_reduce($rules, function ($carry, $rule) use ($password) {
return (preg_match($rule, $password) > 0 ? $carry + 1 : $carry);
}, 0);
De todos modos, este concepto de puntuación de contraseña es básico. Te interesa comprar patrones y repeticiones. Por ejemplo, no es lo mismo tener de contraseña Miguel2020! que 20M!gu3l20 (en este caso, ambos tienen la misma puntuación).
Saludos
Sí, es algo básico.
Gracias!


Pero vaya que un foro es un foro; y yo ese tipo de dudas las consultaría más bien con un abogado, antes que con un aficionado al hacking o la informática en general. Quien sabe, puede que por aquí haya alguien que reúna ambas condiciones. Aún así no dejaría de ser una opinión "foreril"; si estuviese en juego mi seguridad "legal" buscaría otro tipo de asesoramiento y apoyo más técnico y fiable.