Consider also, that some sites prefer to mail the user there password, some prefer to create a new random password and send that, and still others prefer to send a link that will do the second, but only if it is clicked. You should make it easy to do any of those.
Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).