nelle pagine php puoi tranquillamente mettere codice html purchè sia output di php oppure meglio ancora fuori dai tag di apertura/chuisura php
<?php echo "<div>ciao</div>" ?>
<?php
$myvar = ciao;
?>
<div><?php echo $myvar ?></div>
Quello che non capisco nel tuo codice è in header.php , che senso ha scrivere "<?php ?>"?
Una pagina php può anche limitarsi a contenere codice html non occorre mettere per forza quei tag.
Altra cosa, se non opportunamente configurato php non permette di usare <? al posto di <?php .
Altra cosa ancora, quando fai l'echo, la stringa che passi a echo se è wrappata tra doppi apici, non può contenere doppi apici, ma apici singoli o doppi apici con l'escape...
echo "<div style='float: left;'>"; //ok
echo "<div style="float:left;">"; //NO
echo "<div style=\"float: left;\">"; //ok
echo '<div style="float:left";>'; //ok
Infine considera che puoi concatenare stringhe con '.' .
$pagina = $_GET['pagina'];
include("/".$pagina.".php");
Vedi un pò se riesci a risolvere.