Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/04/2016, 05:00
Avatar de Jfco
Jfco
 
Fecha de Ingreso: marzo-2016
Mensajes: 8
Antigüedad: 8 años, 8 meses
Puntos: 1
Respuesta: Como generar enlaces para cambiar la password de un usuario en una web

Cambiar el password de un usuario por su email
-------------------------------------------------------------

Se trata de un proceso que consta de varios modulos de codigo interconectados entre si.
Pasaremos variables: Datos de usuario o de Control de Acceso entre estos modulos de codigo.
A veces este paso de variables se hara mediante la clausula 'hidden' del formulario.

El numero de modulos y la cantidad de Controles de Acceso y verificacion de datos, lo decides tu
en funcion de como quieres que sea tu Aplicacion. Como minimo, utilizaras del orden de 5 formularios
de entrada o verificacion de datos, o modulos de codigo.

La idea principal, es generar un 'TOKEN' o 'KEY' que sera la Autorizacion para el usuairio. Dicho 'Key'
sera temporal, con vida: 24h, 48h, .... segun queramos. Transcurrido ese periodo, se destruira, y el
usuario perdera su Autorizacion para poder acceder a cambios en nuestra Base de Datos.

Ahora ese 'Token' lo vamos a guardar en una Base de Datos creada para la ocasion junto con el nombre de
usuario que lo genera. Ademas, deberemos borrar los posibles 'Token' anteriores a nombre del mismo usuario
y que esten guardados para evitar 'colisiones' futuras.

Por otro parte, ese 'Token' lo vamos a pasar mediante un email que enviaremos a la cuenta de correo del
usuario. En dicho email le pasaremos sus datos actuales, y un link para posibilitarle el cambio de su
clave de acceso.

Podremos pasar el link junto con el 'Token' y asi tendremos Autorizado el formulario para que proceda al
cambio de clave: "http://" . $host . $uri . "/validarclave.php?token=" . $token;

Cuando el usuario 'nos devuelva' mas adelante ese 'Token' ( mediante otro formulario ), comprobaremos
que el 'Token' que nos devuelve es el que tiene guardado y en vigor generado para la ocasion, con lo que
le podremos autorizar a hacer esos cambios, por ejemplo, cambio de clave de acceso.

La 'caducidad' de ese 'Token', la podemos programar con comandos directos SQL sobre la propia Base de datos
creada para guardar el 'Token'. Sera SQL quien borre ese registro cuando caduque el permiso:

CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 24 HOUR
DO
DELETE FROM `dolphin`.`tblreseteopass` WHERE `tblreseteopass`.`creado`
<= DATE_SUB(CURTIME(), INTERVAL 1 DAY)

Si todo es correcto, autorizaremos el cambio de clave, registraremos el cambio, borraremos el 'Token' y
posibilitaremos un report de cambios hechos por el usuario mediante un segundo email opcional.

Os dejo con un link Super-interesante!!!! y que a mi me hizo de guia y gran ayuda:

http://www.codedrinks.com/restablecer-contrasena-mediante-correo-electronico-con-php-y-mysql/