prima di setcookie e header NON DEVI GENERARE OUTPUT!

neanche un echo vuoto, neanche una riga vuota... nulla di nulla!

Se proprio devi...

<?php
ob_start();
...
.
....
.....
....
....
ob_end_flush();
?>