I agree cahva - it's not worth the risk!
When I created mine, I simply used a flagging system:
Given that my site relates to a paying membership, all usernames (email addresses) must exist inthe database of paying members
Users don't automatically get a login when they join (I'm fixing that at the moment)
When they want to log in for the first time, they must hit 'get/reset password'
This generates a random hash (but substr'd to 8 chars) sets it as their password, and emails it to them at the address they specified. If the address isn't in the database, they get an error (you are not a member or are not using your registered email)
It also sets a 'reset' flag to a value of 1.
The user can then check their email, pick up this random hash (actually based on a timestamp) and enter it as their password. If the email and password are successful, it checks the 'reset' flag.
Because this flag is set to '1' they are redirected to a page asking them to change it.
At this point they simply enter the hash they were given and enter (and confirm) a new password.
If the hash matches, and the two new passwords match, it updates their account and they are logged in with a nice easy to remember password.