tico74:
El header() no debe estar necesariamente al comienzo del script... Sino que debe estar antes de que haya alguna salida al navegador (por ejemplo, código HTML, JavaScript).
Lo que debes hacer es buscar una manera de estructurar bien tu código.
Las "páginas" (scripts) de proceso no necesitan escribir código.
Podría ser algo así:
Código PHP:
//Supongamos que éste es el script al que has enviado las variables del formulario
if (usuario existe){
header("location: formulario.php?error=1");//Redireccionas al formulario y le envías una variable que indique el error.
}else{
Acá realizas el proceso de crear el nuevo registro en la BD.
Y luego redirecciona a la página que quieras:
header("location: index.php");
}
Bueno.. eso en plan básico medio código... medio algoritmo.. pero si tienes esa estructura, todo debe funcionar bien.
Saludos
PD:(No recomendado)También hay funciones como ob_start() (revisa en las FAQ's y en el manual) que hacen lo que dices con las cabeceras para poder poner tus header() donde quieras... pero, además de no ser una programación limpia, consumen demasiados recursos del servidor.