An HTML form input with a <select> element for state? (There are IP address databases available which can give you a pretty good guess, but they are not fool-proof and may give completely wrong results if the data is bad/outdated or if the user is accessing your site via a remote proxy server.)