Cita: pero la salida la tengo dentro de un if!
Supongo entendiste por "salida" a lo "devuelto" por la función... no es así. Cuando dije salida al navegdor me refería a la entrega de código... algún echo(), espacio en blanco antes de iniciar PHP.. o que este emebebido dentro de HTML. Eso es lo que debes evitar.
Esto esta mal:
Código PHP:
echo "<html><head></head><body>"; // entrega de código
header("Location: blablabla.php"); // setcookie() ó session_start()
echo "</body></html>";
Simplemente debes organizarte... Esto es correcto:
Código PHP:
header("Location: blablabla.php"); // setcookie() ó session_start()
// antes de cualquier salida... si husas header("Locaton:..") es bueno poner un exit() inmediatamente después.
echo "<html><head></head><body>"; // entrega de código
echo "</body></html>";
Espero quede claro...