Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Limitar caracteres password

Estas en el tema de Limitar caracteres password en el foro de PHP en Foros del Web. Hola, quiero validar mi password con las siguientes características: Longitud de 8 a 64 caracteres. Puede tener letras y números. Puede tener al menos una ...
  #1 (permalink)  
Antiguo 29/09/2020, 20:47
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta Limitar caracteres password

Hola, quiero validar mi password con las siguientes características:
  • Longitud de 8 a 64 caracteres.
  • Puede tener letras y números.
  • Puede tener al menos una mayúscula y una minúscula.
  • Puede tener al menos una letra y un número.
  • al menos un signo especial
Tengo este código:
Código PHP:
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,64}$/',($clave))) {
$mensaje='El password debe tener de 8 a 64 caracteres, al menos un número, una Mayúscula, una minuscula y caracteres especiales';
} else {
$mensaje "Password seguro";
}
echo(
$mensaje); 
Al usar
Código PHP:
$clave 'aaaaaaaAaaaa1aaaaaaaaaaaaaaaa'
el código acepta como Password seguro, se supone que no debe aceptar porque no tiene caracteres especiales.
Lo otro es qué pasa con las letras ñ ó Ñ.
Agradeceré sus comentarios. Gracias.
__________________
Todos somos iguales. NO! a la violencia de género.

Última edición por bandolera; 29/09/2020 a las 20:53
  #2 (permalink)  
Antiguo 29/09/2020, 23:59
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Limitar caracteres password

Bueno, es algo complejo lo de expresiones regulares, al menos solo he usado lo basico.

para lo que tu quieres hacer haria un ciclo para recorrer cada caracter de la cadena
detectaria si es numero o letra o mayuscula o minuscula etc e iria contando cada caso con variables contadoras
al final del ciclo verificaria que las variables esten en los minimos y maximos.. si es asi entonces es contraseña segura, si una de ellas esta abajo del minimo o arriba del maximo.. entonces diria que no es segura..
se me hace mucho mas facil asi que la expresion regular..
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #3 (permalink)  
Antiguo 30/09/2020, 12:11
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Limitar caracteres password

Para validar contraseñas yo utilizo esta expresion regular

Código Javascript:
Ver original
  1. ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$

desglosando esto (?=.*[a-z])

() Los paréntesis define un grupo
?= Que tenga que ser verdadero, en ingles dice positive lookahead /anticipación positiva
.* que pueda tener cualquier carácter antes de
[a-z] rango de caracteres que quieres forzar a que tenga si o si, valida que tenga por lo menos 1

Si te fijas pongo varias veces esa estructura por cada tipo de carácter a forzar, después
ahora si que venga cualquier cosa en el orden que sea
[A-Za-z\d#$@!%&*?]{8,30}


Nota si quieres incluir caracteres acentuados puedes agregar en el rango À-ÿ eso aceptara cualquier tipo de acento y la Ñ (mayusculas y minusculas)
[A-Za-zÀ-ÿ\d#$@!%&*?]

o la pura Ñ pue la agregas maualmente en el rango por ejemplo
[A-Za-zñÑ\d#$@!%&*?]
  #4 (permalink)  
Antiguo 01/10/2020, 19:40
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Limitar caracteres password

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Para validar contraseñas yo utilizo esta expresion regular

Código Javascript:
Ver original
  1. ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$

desglosando esto (?=.*[a-z])

() Los paréntesis define un grupo
?= Que tenga que ser verdadero, en ingles dice positive lookahead /anticipación positiva
.* que pueda tener cualquier carácter antes de
[a-z] rango de caracteres que quieres forzar a que tenga si o si, valida que tenga por lo menos 1

Si te fijas pongo varias veces esa estructura por cada tipo de carácter a forzar, después
ahora si que venga cualquier cosa en el orden que sea
[A-Za-z\d#$@!%&*?]{8,30}


Nota si quieres incluir caracteres acentuados puedes agregar en el rango À-ÿ eso aceptara cualquier tipo de acento y la Ñ (mayusculas y minusculas)
[A-Za-zÀ-ÿ\d#$@!%&*?]

o la pura Ñ pue la agregas maualmente en el rango por ejemplo
[A-Za-zñÑ\d#$@!%&*?]
Que tal Arturo, no tengo mucha experiencia en expresiones regulares, pero cual seria la diferencia en hacerlo de una forma mas simple? sin usarlas
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #5 (permalink)  
Antiguo 02/10/2020, 19:45
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Respuesta: Limitar caracteres password

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Para validar contraseñas yo utilizo esta expresion regular
o la pura Ñ pue la agregas maualmente en el rango por ejemplo
[A-Za-zñÑ\d#$@!%&*?]
Muy clara tu explicación. Muchas gracias.
__________________
Todos somos iguales. NO! a la violencia de género.

Última edición por bandolera; 02/10/2020 a las 20:11
  #6 (permalink)  
Antiguo 03/10/2020, 13:15
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Limitar caracteres password

Cita:
Iniciado por minombreesmm Ver Mensaje
Que tal Arturo, no tengo mucha experiencia en expresiones regulares, pero cual seria la diferencia en hacerlo de una forma mas simple? sin usarlas
No entendí muy bien tu pregunta, por lo ultimo "sin usarlas" creo entender que te refieres a no usar la expresión regular y hacer solo uso de un ciclo como mencionaste previamente.

Si es eso a lo que te refieres, la diferencia radicara en la cantidad de código a implementar y el performance de este, por ende también en tu aplicación.

prueba a realizar ese ciclo en PHP/Javascript o el lenguaje de tu preferencia., veras que la cantidad de código será mucho mas alta que con una expresión regular.

Si no es el caso, por favor pon un ejemplo de a que te refieres con "hacerlo de una forma mas simple"
  #7 (permalink)  
Antiguo 04/10/2020, 21:30
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta Respuesta: Limitar caracteres password

Cita:
Iniciado por ArturoGallegos Ver Mensaje
No entendí muy bien tu pregunta, por lo ultimo "sin usarlas" creo entender que te refieres a no usar la expresión regular y hacer solo uso de un ciclo como mencionaste previamente.

Si es eso a lo que te refieres, la diferencia radicara en la cantidad de código a implementar y el performance de este, por ende también en tu aplicación.

prueba a realizar ese ciclo en PHP/Javascript o el lenguaje de tu preferencia., veras que la cantidad de código será mucho mas alta que con una expresión regular.

Si no es el caso, por favor pon un ejemplo de a que te refieres con "hacerlo de una forma mas simple"
Aprovecho para que me aclares una pequeña duda.
Con la expresión que mencionas es suficiente para controlar la longitud del password. Cierto? Es decir al ponerle el rango, ya no necesito validar que sea mayor o menor de lo deseado.
__________________
Todos somos iguales. NO! a la violencia de género.
  #8 (permalink)  
Antiguo 04/10/2020, 22:23
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Limitar caracteres password

Algo así, para enviar a servidor ya no necesitas validar la longitud ya que al final de la expresión tiene {8,30}$ esto indica que debe tener mínimo 8 caracteres y máximo 30 , tu modifícalo al tus necesidades.

Peeero, si deseas validar en el lado de cliente con javascript, si seria conveniente validar la longitud por separado para que puedas mostrar un mensaje personalizado

podrías usar 3 if longitud mínima, máxima y al final validar con expresión regular, cada if mandando un mensaje según sea el caso.

Etiquetas: caracteres, limitar, password
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:47.