Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/04/2013, 23:28
Avatar de waldragon
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 $