We’re building a small sub-site that, on the front page, has a one input box form that users can submit. From there, they’re taken to a page with a few more associated form fields (add more details, tag it, etc.) with the first main form field already filled in. This works splendidly, thus far.
The problem comes for users that are not logged in. When they submit that first form, they’re taken to a (LoginToboggan based) login page that allows them to login. After they login, they redirect to the second form page, but the first main form field isn’t filled in — in other words, the form data didn’t persist.
How can we store that data and have it persist across the access denied page?
You could save the data in a cookie that would be passed to the page after the login page.
Assuming that you are using the Form API to create the form, and that you have a field called “fieldname” in the function to generate the form:
Set the cookie(s) in the submit handler for your form:
After they login and are redirected to page two of your form, you can read the value of the cookie(s) and if they exist, insert them into the default values of the fields:
The cookies(s) will be presented on each page load after they are set, so it doesn’t matter if there are several failed login attempts or other page views in between. You should probably delete the cookies after they’re used or set a short expiration time so that they are cleaned up automatically.