A morass of form changes. The main goals are to avoid the loss of info
when backing up (cause of an error that needs to be fixed) since not all browsers handle this the same. Instead, redraw the form with all of the original info and a list of error messages at the top. Conceptually simple change, but it turns out to be a pain to implement since you need to combine the form and processing code in one page (well, its just a lot easier to do that), and then change all of the forms to deal with a "default" value. That is, each different kind of input tag (text, radio, select, checkbox, etc.) requires slightly different changes to do that. Lots of forms, lots of entries on the forms, and its a long slow tedious process. Much nicer though, although the code is a bit harder to grok. At the same time, I added a lot more sanity checks of the information being passed in. The other change is to deal with how browsers handle the back button on a form thats been properly submitted. Not all browsers use the cache directives the same, and I was often typing back, only to have some form get reposted. Thats a major pain in the butt. The way to deal with that is to have the processor send out a Location header, which modifies the browser history so that the post is no longer in the history. You back up straight to the unposted form (if its in the cache). I've done this to only some forms, since its a bit of a pain to rework things so that you can jump ahead to a page that spits out the requisite warm fuzzies for the specific operation just completed. I've done newproject, joinproject, update user info, newimageid, and newimaged_dz forms.