First of all, you probably shouldn't post code that has your database username/password in it.
It looks like you are displaying error messages and telling the user to hit their back button to go back and correct the errors. You are probably encountering the IE bug described here:
http://www.experts-exchange.com/Web/Web ... 35573.html
adding
header("Cache-Control: private");
should solve the problem.
Personally, I don't think this is the best way to go about validation. It would be better if you returned the error messages with the form as they previously filled it out.
for example, on your form you could do the input elements like this:
<input type="text" name="name" id="name" value="<?= $frm["name"] ?>" class="textstyle"/>
the first time through, the value for this element will be blank because you haven't created an array called
$frm yet.
then, when you receive the form put all the data received into this
$frm array like this:
so, when you return the form to them with error messages, all the elements will be filled out. Its a little more involved with checkboxes, radios and selects, but it works.
Another benefit of using a technique like this is that you can use the same form include for modifying existing data, like a form to update an existing user's data.. You just do your query, put the data in the $frm array and send them the form with all the elements already filled out.