Pourquoi une redirection PHP « header(« location… ») » peut ne pas fonctionner une fois en ligne


Si vous ne comprenez pas pourquoi une redirection PHP de type header(« location:xxx ») comme sur l’exemple ci-dessous ne fonctionne pas une fois que vous basculez votre site en ligne alors qu’en local cela fonctionnait parfaitement, c’est tout simple, c’est parce qu’il faut retirer tous les espaces avant et tous les  sauts de ligne.

<?php include("bdd.inc.php"); ?>
<?php
$annee=$_POST["zs-annee"];
$sql=$bdd->exec("INSERT INTO annee VALUES($annee)") or die(print_r($bdd->errorInfo()));


header("location:/xxx/admin");
?>


Cette histoire d’espaces en trop pourrait bien vous servir dans d’autres situations, j’ai déjà eu le cas lorsque j’ai rapatrié un site en ligne qui fonctionnait parfaitement sur un autre serveur, pas moyen qu’il fonctionne j’avais cette erreur :

« Warning : Cannot modify header information – headers already sent by  »

Il a suffit que je regarde la ligne concernée (en l’occurence il me mentionnait une ligne dans le functions.php) et que je supprime quelques espaces et hop cela a fonctionné !