El algoritmo más sencillo sería pedir el email con que el usuario se registró (o el nick o mejor todavía el nick+email para que sea más seguro), luego buscas que exista eso en la base de datos. Si es así, generas una nueva contraseña de la forma que quieras (números, letras, etc.), envias un email al usuario con los nuevos datos y actualizas tu tabla en la database con esa contraseña encriptada por md5, cuando el usuario entre a la página lo hará con su nueva contraseña.
Luego hay formas más complicadas, como enviar un email al usuario pidiendo confirmación y si éste confirma enviar un segundo email con los datos (esto es pq un usuario A podría joder a otro B cambiandole la contraseña de acceso, y con la confirmación entonces no lo hace a menos que el usuario B diga que sí)
Ahora el código es cosa tuya...