southplatte is correct with regard to this being a potential security risk. You simply can't allow people to modify company or personal contact information without logging in. You'd be allowing any amateur hacker to cause all sorts of mischief.
If you've already got user information stored in an account (database) which requires the user to log in to modify, you're not far from completing your mission.
You may want to email a link with a querystring appended to it. The querystring value will be their customer id (encrypted or not) from a customer database table. (
www.yoursite.org/userinfo.php?userid=10345)
Clicking the link would take the user to the information verification script on your site where they'd see a page displaying their contact information and with the options to either "Verify" or "Modify" their information.
Clicking "Verify" creates a session named "isvalid" with a value of "True", then submits a form containing their customer id from the customer table to an email script.
The email script reads the querystring value, decrypts the ID key sent by the form, checks to see that a session named "isvalid" containing a value of "True" exists, compares the customer ID and email address to the information stored in the database, then checks a new column named "hasdatasheet" for a value of "False" to see if they've already been emailed the information.
If the information jives and they've not yet received their data sheet, the script emails them the appropriate data sheet, or PDF file, closes the "isvalid" session and their user login session (if it exists).
Upon completion, the column named "hasdatasheet" would be flagged to "True" and the user would see a "Thanks" screen telling them that the process is complete and that the file has been sent to them at "customername@customeremail.org". Done deal.
Clicking "Modify" checks for the "isvalid" session, closes it if it exists, then requires them to log in to change their information. Once the changes are complete, bounce them back to the verify/modify page again so that they can view the information, confirm the changes, modify it again or verify it as correct.
The only person that would receive the data sheet would be the individual whose email address is stored in the customer table. Subsequent visits to the verification page would tell the user that the information has already been sent, show them the recipient email address and customer information but allow them to resend it if needed.
Optionally, you could check the "hasdatasheet" column for "True" and tell them to contact your Site Admin or other company representative.
At least, that's how I'd tackle it...
.02