Bonjour,
Après une bataille de 5h, je résolu un bug bien étrange. Cela fonctionnait
impeccable sous SPIP 1.7.2, mais impossible de le faire marcher sous SPIP
1.8.1
Voici un code simplifié qui met en évidence le soucis:
---------------------
<BOUCLE_principale(ARTICLES) {id_article}>
<BOUCLE_test(MOTS) {id_article}{id_mot=4}>
<? header('Location: /articleTest.php3?id_article=1');?>
</BOUCLE_test>
[(#TITRE) -> avec les mots clés]
<//B_test>
</BOUCLE_principale>
---------------------
L'idée est qu'en fonction d'un mot clé, un article est redirigé vers autre
chose (une rubrique ou un article), dans l'exemple c'est vers l'article 1.
Alors ceci me cause l'erreur suivante, mais uniquement pour les visiteurs:
---------------------
Warning: Cannot modify header information - headers already sent by (output
started at /home/palais/www/inc-public.php3(53) : eval()'d code:3) in
/home/palais/www/inc-public.php3(53) : eval()'d code on line 3
---------------------
En effet, si l'on est authentifié ou si l'on fait une simple déconnexion,
cela fonctionne bien.
Le problème vient que SPIP rajoute des saut à la ligne est du coup PHP ne
veut pas envoyer le header. Ce que je ne comprends pas, c'est pourquoi cela
fonctionne quand on est authentifié.
Pour résoudre le soucis, il faut reprendre le même code est supprimer les
retours chariot avant le header:
---------------------
<BOUCLE_principale(ARTICLES) {id_article}><BOUCLE_test(MOTS)
{id_article}{id_mot=4}><?
header('Location: /articleTest.php3?id_article=1');?>
</BOUCLE_test>
[(#TITRE) -> avec les mots clés]
<//B_test>
</BOUCLE_principale>
---------------------
Ça devient un peut moins lisible, mais cela fonction.
Voilà si ça peut aider, c'est avec plaisir.
A+
Pierre