Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar Historico de contraseña solo ultimos 13

Estas en el tema de Guardar Historico de contraseña solo ultimos 13 en el foro de PHP en Foros del Web. Hola buen día!, molestando de nuevo, tengo este detalle y no se como resolverlo, tengo que guardar un histórico de contraseñas de hasta 13 para ...
  #1 (permalink)  
Antiguo 22/02/2013, 15:54
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 12 años, 3 meses
Puntos: 6
Pregunta Guardar Historico de contraseña solo ultimos 13

Hola buen día!, molestando de nuevo, tengo este detalle y no se como resolverlo, tengo que guardar un histórico de contraseñas de hasta 13 para cada usuario de mi aplicacion... alguien tendria alguna idea de como hacer esto?... habia pensado crear una tabla en mi bdd en donde estuviera el id del usuario y sus contraseñas, pero la cosa es que no se como controlar que solo se guarden 13, por ejemplo para cuando lleve la 14 vez que cambie la contraseña, esta se actualizara en el primer registro que hay... no se si me doy a entender.... Basicamente quisiera saber como controlar que solo se guarden 13 historicos de contraseñas, y que los nuevos cambios se vayan actualizando desde la primera posicion de la tabla.... asi para cada usuario. Saludos!
  #2 (permalink)  
Antiguo 22/02/2013, 16:00
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Guardar Historico de contraseña solo ultimos 13

Te doy la lógica a ver si lo solucionas:

cambia contraseña -> verifico con COUNT cuantos registros de ese usuario existen -> si es menor que 13 -> inserto nuevo registro -> si es igual a 13 -> verifico cual es el registro con mayor fecha de modificación y lo cambio.

Seria mas o menos una forma de hacerlo, no se si a alguien se le ocurra algo menos complicado.

Pero deberás colocar un campo fecha de modificación en la tabla para lograrlo.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 22/02/2013, 16:04
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 12 años, 3 meses
Puntos: 6
Respuesta: Guardar Historico de contraseña solo ultimos 13

Cita:
Iniciado por jotaincubus Ver Mensaje
Te doy la lógica a ver si lo solucionas:

cambia contraseña -> verifico con COUNT cuantos registros de ese usuario existen -> si es menor que 13 -> inserto nuevo registro -> si es igual a 13 -> verifico cual es el registro con mayor fecha de modificación y lo cambio.

Seria mas o menos una forma de hacerlo, no se si a alguien se le ocurra algo menos complicado.

Pero deberás colocar un campo fecha de modificación en la tabla para lograrlo.
Sabes estaba pensando algo asi, y si mi tabla tiene la fecha de la última configuración, solo que no sabia si estaba bien esa lógica.. estaba pensando realizar una funcion que me retornara cuantos registros hay de ese usuario en esa tabla, y con ese dato hacer las comparaciones de if o else.. aunque en cuanto a fechas no se como obtener el maximo y minimo de un campo datetime.. Muchas gracias!
  #4 (permalink)  
Antiguo 25/02/2013, 08:27
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Guardar Historico de contraseña solo ultimos 13

Tal vez
Código MySQL:
Ver original
  1. SELECT * FROM tu_tabla WHERE condicion ORDER BY fecha ASC LIMIT 1

te debería devolver el registro con MAYOR fecha
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #5 (permalink)  
Antiguo 25/02/2013, 08:54
 
Fecha de Ingreso: febrero-2013
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Guardar Historico de contraseña solo ultimos 13

yo lo trataría como una relación N:13 que es lo que es y no como N:M y propagaría al lado del usuario

SaLu2!!
  #6 (permalink)  
Antiguo 05/04/2013, 14:42
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 12 años, 3 meses
Puntos: 6
Respuesta: Guardar Historico de contraseña solo ultimos 13

Cita:
Iniciado por adad1 Ver Mensaje
yo lo trataría como una relación N:13 que es lo que es y no como N:M y propagaría al lado del usuario

SaLu2!!
No entendi bien :S
  #7 (permalink)  
Antiguo 05/04/2013, 23:28
Avatar de waldragon  
Fecha de Ingreso: mayo-2010
Mensajes: 735
Antigüedad: 14 años, 5 meses
Puntos: 55
Respuesta: Guardar Historico de contraseña solo ultimos 13

Te armo algo para ayudarte:

Primero tenes que saber el id del usuario que quiere cambiar su contraseña, una vez que tenes ese dato, solo tenes que ver en una tabla contras por ejemplo, cuantas contraseñas almaceno dicho usuario, si tiene trece tomas la mas antigua y la modificas con el nuevo valor y la nueva fecha, entonces esta ya no es la mas antigua si no la mas nueva, por lo que la proxima vez va a modificar otra contraseña, pero si tiene menos de 13 creas otro registro...

para eso en la tabla contras tenes que tener los valores de id (bigint, primery key, autoincrement), iduser (bigint), contra (varchar 30 +/-) , fecha (datetime)

nota:en fecha pone datetime asi no hay riesgo de que si cambia contraseña varias veces el mismo dice se complique la cosa

y usas lo siguiente

archivo modificar.php
Código PHP:
Ver original
  1. <php
  2. $iduser="";//aca tenes que poner el valor de la id del usuario logeado con un valor de session lo hago yo
  3. $contras="contras";//nombre de la tabla que guarda las contraseñas
  4. if(isset($_POST['modificar'])){
  5. $contra=$_POST['contra'];
  6. if($contra){
  7. //aca averiguamos cuantos registros tiene este usuario en la tabla contras
  8. $sentencia = "SELECT id FROM $contras WHERE iduser='".$iduser."';";
  9. $result=mysql_query($sentencia);
  10. $numrows = mysql_num_rows($result);
  11. if($numrows ==13) {
  12. //si hay 13 registros de ese usuario, seleccionamos el mas viejo y lo modificamos
  13. $sent="SELECT id FROM $contras order by fecha asc LIMIT 1";
  14. $result=mysql_query($sent);
  15. $ver=mysql_fetch_assoc($result);
  16. $id=$ver['id'];
  17. //cambiamos el valor de contra en el registro mas viejo
  18. $sql = "UPDATE $contras SET contra = $contra WHERE id='".$id."';";
  19. //y actualizamos la fecha a la actual
  20. $sql = "UPDATE $contras SET fecha = now() WHERE id='".$id."';";
  21. }else{
  22. //como tiene menos de 13 agregamos un registro nuevo
  23.  $agregar = "INSERT INTO $contras(iduser, contra, fecha) VALUES('"
  24. . $iduser. "','".$contra."',now())";
  25. $resultado = mysql_query($agregar);
  26. }
  27. echo"SU CONTRASEÑA HA SIDO MODIFICADA, GRACIAS...";
  28. }else{echo"EL CAMPO CONTRASEÑA NO PUEDE ESTAR VACIO...";}
  29. }//if post mod¡ficar
  30. ?>
  31. <form action="modificar.php" method="post">
  32. Ingresar la nueva contraseña:<br/>
  33. Contraseña: <input name="contra" type="text"><br/>
  34. <input type="submit" name="modificar" value="Modificar Contraseña">
  35. </form>

bueno... creo que con eso tiene que andar, no lo probe pero cualquier cosa lo vemos, saludos...

Última edición por waldragon; 05/04/2013 a las 23:29 Razón: me faltaba un $

Etiquetas: contraseñas, limite, mysql
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 21:08.