te lo hago en pseudocodigo (recuperar.php)
PHP:
SI email !=""
EnviarEmailRecuperar
SINO
Informar Error de falta email
Mostrar Formulario de recuperacion
FinSI
funcion EnviarEmailRecuperar
Crear hash de recuperacion en base de datos (un md5 por ejemplo asociado al usuario) (usando mysqli)
Enviar email al usuario usando: sitio.com/recuperar2.php?hash=**ACA HASH MD5**
fin funcion
------
ahora recuperar2.php
PHP:
SI el hash existe en la base de datos
Mostrar formulario para pedir contraseña nueva (dos veces)
Si las contraseñas coinciden
Actualizar contraseña del usuario
Eliminar hash md5 de la base de datos
Redireccionar al login de usuario
SINO
Informar error de contraseñas
FinSI
SINO
Mostrar error
FinSi
Es para que entiendas como funciona mas o menos... las funciones a usar serian:
md5, if, mysqli, mail
sino:
Recuperar CONTRASEA de USUARIO y enviar por CORREO
google: crear recuperar passwords + php