I had this problem myself, and here's what I ended up doing:
Instead of specifying the TARGET in the header, I specified it in the HTML form used to call the page which redirects using header();
So, using an arbitrary login example, my design roughly looks like this:
--- index.html ---
<FRAME SRC="top_frame.php" >
<FRAME SRC="bottom_frame.php">
--- my_form_page.html ---
<FORM ACTION="login_script.php" TARGET="top_frame.php" METHOD="POST">
<INPUT TYPE="text" NAME="form_field">
</FORM>
--- login_script.php ---
<?php
// login successful
if (validate($form_field)){
header(location: member_menu.html);
}
// login failed
else{
header(location: non_member_menu.html);
}
?>
If you want your header to change the content of 2 or more frames, use TARGET="_top" in your FORM, and redirect the header to a new index page, such as index2.html, that recreates all the frames.
I hope this helps.
Jon
www.jonbender.com