Foros del Web » Programando para Internet » PHP »

Historial de contraseñas

Estas en el tema de Historial de contraseñas en el foro de PHP en Foros del Web. Buen dia, se me ha encomendado una tarea que no he logrado resolver y recurro al conocimiento de ustedes para que me ayuden. se me ...
  #1 (permalink)  
Antiguo 17/08/2010, 13:44
Avatar de agutierrezd  
Fecha de Ingreso: marzo-2004
Mensajes: 45
Antigüedad: 20 años, 9 meses
Puntos: 0
Mensaje Historial de contraseñas

Buen dia, se me ha encomendado una tarea que no he logrado resolver y recurro al conocimiento de ustedes para que me ayuden.

se me ha solicitado generar un historial de contraseñas en PHP , es decir que un usuario al cambiar la contraseña no debe hacer uso de las ultimas 3 contraseñas anteriores.

Gracias por su ayuda
__________________
DITO
Bogota - Colombia
  #2 (permalink)  
Antiguo 17/08/2010, 13:51
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 7 meses
Puntos: 50
Respuesta: Historial de contraseñas

Creese una tabla llamada con_anteriores debe tener tres campos... Idusuario,COntraseña,fechacreada

Cada vez que el usuario desee cambiar de contraseña antes de hacer el cambio en la tabla usuarios va a esta tabla y hace un select de las 3 ultimas contraseñas del usuario "para eso es la fecha" y las compara con la nueva que desea asignar el usuario y listo si no existe hace el insert en esa tabla y el update en la usuarios si ya existe muestra el error al usuario.. "obiamente en esta tabla tambien deben quedar las contraseñas encriptadas."
  #3 (permalink)  
Antiguo 17/08/2010, 13:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 210
Antigüedad: 15 años, 3 meses
Puntos: 19
Respuesta: Historial de contraseñas

Puedes hacer un campo en MySQL donde se vayan almacenando las contraseñas, y en el momento de cambiar la contraseña, que no permita usar alguna que exista en esa base de datos.
  #4 (permalink)  
Antiguo 17/08/2010, 15:51
Avatar de agutierrezd  
Fecha de Ingreso: marzo-2004
Mensajes: 45
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Historial de contraseñas

ok, gracias pero me puede indicar por favor como realizar esta comparacion, de hecho tengo la tabla pero al confirmar si existe solo verifica el ultimo y no los 3 ultimos, es decir compara unicamente con el ultimo cambio registrado de cotraseña pero en penultimo por ejemplo lo deja asignar sin restriccion.

... eso me tiene en jaque , en verdad le agradezco su ayuda inmensamente.

gracias
__________________
DITO
Bogota - Colombia
  #5 (permalink)  
Antiguo 17/08/2010, 15:55
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 18 años, 2 meses
Puntos: 74
Respuesta: Historial de contraseñas

Para que no te pase eso deberías de sacarlo como array creo...

Muestra la consulta y la comparacion que estas haciendo para ver.

Salduos,
  #6 (permalink)  
Antiguo 17/08/2010, 16:06
Avatar de agutierrezd  
Fecha de Ingreso: marzo-2004
Mensajes: 45
Antigüedad: 20 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Historial de contraseñas

$colname_rsaaa = "-1";
if (isset($_SESSION['user'])) {
$colname_rsaaa = $_SESSION['user'];
}
mysql_select_db($database, $oConnXXX);
$query_rsaaa = sprintf("SELECT * FROM log_pwd WHERE pwd_user = %s ORDER BY id_pwd DESC LIMIT 0,3", GetSQLValueString($colname_rsaaa, "text"));
$rsaaa = mysql_query($query_rsaaa, $oConnXXX) or die(mysql_error());
$row_rsaaa = mysql_fetch_assoc($rsaaa);
$totalRows_rsaaa = mysql_num_rows($rsaaa);

///////////////////////////////////////////////////////

y ahora la funcion

function Compare(&$ABC) {
$fieldCompareObj = new ABC_FieldCompare($ABC);
$fieldCompareObj->addField("Password", "{rsaaa.pwd_pass}", "!=", "No puede usar esta contraseña, ya fué utilizada anteriormente");
$fieldCompareObj->addField("Password", "{SESSION.user}", "!=", "La contraseña debe ser diferente al nombre del usuario.");
return $fieldCompareObj->Execute();
}

gracias por su ayuda si me indica como construir el array que me comenta...
__________________
DITO
Bogota - Colombia
  #7 (permalink)  
Antiguo 17/08/2010, 16:07
Avatar de agutierrezd  
Fecha de Ingreso: marzo-2004
Mensajes: 45
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Historial de contraseñas

Cita:
Iniciado por DeFFeR Ver Mensaje
Para que no te pase eso deberías de sacarlo como array creo...

Muestra la consulta y la comparacion que estas haciendo para ver.

Salduos,
$colname_rsaaa = "-1";
if (isset($_SESSION['user'])) {
$colname_rsaaa = $_SESSION['user'];
}
mysql_select_db($database, $oConnXXX);
$query_rsaaa = sprintf("SELECT * FROM log_pwd WHERE pwd_user = %s ORDER BY id_pwd DESC LIMIT 0,3", GetSQLValueString($colname_rsaaa, "text"));
$rsaaa = mysql_query($query_rsaaa, $oConnXXX) or die(mysql_error());
$row_rsaaa = mysql_fetch_assoc($rsaaa);
$totalRows_rsaaa = mysql_num_rows($rsaaa);

///////////////////////////////////////////////////////

y ahora la funcion

function Compare(&$ABC) {
$fieldCompareObj = new ABC_FieldCompare($ABC);
$fieldCompareObj->addField("Password", "{rsaaa.pwd_pass}", "!=", "No puede usar esta contraseña, ya fué utilizada anteriormente");
$fieldCompareObj->addField("Password", "{SESSION.user}", "!=", "La contraseña debe ser diferente al nombre del usuario.");
return $fieldCompareObj->Execute();
}
__________________
DITO
Bogota - Colombia
  #8 (permalink)  
Antiguo 18/08/2010, 05:43
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 18 años, 2 meses
Puntos: 74
Respuesta: Historial de contraseñas

agutierrezd, creí que lo estabas haciendo de otra manera, por eso te dije eso...
Bueno mira, te he realizado dos códigos que funcionan. Te he realizado 2 porque en primer lugar hice el primer, pero claro luego pense...¡Necesita que haga la comprobación con las 3 últimas contraseñas!. Así que tuve que modifcarlo un poco...

Resultado:

Este código comprueba si la contraseña nueva que esta poniendo X usuario la cambió en un pasado... Eso sí, comprueba todas las contraseñas que tiene ese usuario. No las 3 últimas.

Código PHP:
Ver original
  1. $id_usuario_conectado = '1'; //ID del usuario que esta enviando el cambio...
  2.     $password_que_envia = '123456'; //Password nuevo que quiere cambiar
  3.  
  4.     $query_rsaaa = "SELECT * from log_pwd WHERE id_user = '$id_usuario_conectado' AND pwd_user = '$password_que_envia'";
  5.     $rsaaa = mysql_query($query_rsaaa, $oConnXXX) or die(mysql_error());
  6.    
  7.     $totalRows_rsaaa = mysql_num_rows($rsaaa);
  8.    
  9.     if($totalRows_rsaaa >= 1){
  10.         echo 'No puede usar esta contraseña, ya fué utilizada anteriormente.';
  11.     }
  12.     else{
  13.         echo 'Esta contraseña es nueva y nunca la ha utilizado, por tanto, puede utilizarla.';
  14.     }

Y este último, es un poco más rústico, primitivo... como quieras llamarlo . Y éste sí comprueba las 3 últimas contraseñas. (Sí, quizás se podría a ver hecho mejor, pero me ha salido así )

Código PHP:
Ver original
  1. $id_usuario_conectado = '1'; //ID del usuario que esta enviando el cambio...
  2.     $password_que_envia = '123456'; //Password nuevo que quiere cambiar
  3.    
  4.     $query_rsaaa="SELECT * from log_pwd WHERE id_user = '$id_usuario_conectado' ORDER BY id DESC LIMIT 3";
  5.     $rsaaa = mysql_query($query_rsaaa, $oConnXXX) or die(mysql_error());
  6.     while($totalRows_rsaaa=mysql_fetch_assoc($rsaaa)){
  7.     $contra .= $totalRows_rsaaa['password'];
  8.     }
  9.     if(eregi($password_que_envia, $contra)){
  10.     echo 'No puede usar esta contraseña, ya fué utilizada anteriormente.';
  11.     }
  12.     else{
  13.         echo 'Esta contraseña es nueva y nunca la ha utilizado, por tanto, puede utilizarla.';
  14.    
  15.     }

Eso es todo. Ló único que falta (creo) es terminar de adaptarlo a tu código.

Saludos,

Etiquetas: contraseñas, historial
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 14:10.