That is, unless you use output buffering. It may not be the most elegant solution (using header() to redirect users increases server calls), but I built a template-driven php site that calls: <?php ob_start; ?> ...depending on certain conditions which means I can then use header() even after I have started output.