HTTP odpoveď pozostáva z dvoch častí: na začiatku sú HTTP hlavičky a potom nasleduje samotné telo odpovede. Preto môžeš posielať HTTP hlavičky len dovtedy, kým nezačneš posielať na výstup samotné telo odpovede (ktorým je obvykle HTML). HTTP hlavičky posielaš funkciou header, ale nejaké sa posielajú napríklad aj pri použití funkcie start_session. Preto pred volaním týchto funkcií nemôžeš začať posielať na výstup telo odpovede.
Toľko k teórii, a teraz k samotnému problému. Priamo v chybovej hláške máš napísané, že nemôžeš nastavovať ďalšie HTTP hlavičky, pretože tie už boli odoslané. A odoslané boli preto, lebo si začal na výstup posielať samotné telo odpovede už na 12-tom riadku vo svojom kóde. Keď sa tam pozrieš, tak uvidíš túto zbytočnosť, ktorú treba vymazať:
?>
<?php