La idea que te comentaba antes, es de este estilo:
Suponiendo que quisieras hacer un sistema muy básico de control de usuarios, tenés dos formas:
1.- mezclar HTML y PHP
2.- Procesar lo necesario con PHP y luego mostrar los datos
(de hecho hay una 3.- que es usar un sistema de plantillas o un framework de desarrollo)
De la primera forma una página protegida quedaría algo así
Código PHP:
<html>
<head>
<title>Mi página protegida</title>
</head>
<body>
Hola, <?php
session_start();
if (isset($_SESSION['autenticado'])) {
echo $_SESSION['usuario'];
} else {
header('Location: login.php');
exit;
} ?>
</body>
</html>
¿Se ve el problema? La redirección fallará si el usuario no está autenticado, porque ya se envió texto al navegador.
Creo que el programa que estás haciendo es de este estilo, mezclando PHP y HTML (obviamente de forma no tan burda como en este ejemplo)
A lo que me refiero al decir "separar el PHP y el HTML", la segunda forma, es a algo así:
Código PHP:
<?php
session_start();
if (isset($_SESSION['autenticado'])) {
$usuario = $_SESSION['usuario'];
} else {
header('Location: login.php');
exit;
} ?>
<html>
<head>
<title>Mi página protegida</title>
</head>
<body>
Hola, <?php echo $usuario; ?>
</body>
</html>
La idea es siempre procesar lo necesario con PHP, dejar las partes estáticas como HTML, y mezclar ambos lo menos posible.
Espero que quede más claro ahora.
Saludos.