Redirection php

Salut
J’ai encore un ptit probleme PHP
Je cherche a faire une redirection

[cpp]switch ($acc)
{
case ‘banderole’ : header(‘location:index.php?i=banderole’);break;
case ‘casq’ : header(‘location:index.php?i=casq’);break;
}[/cpp]

mais j’obtient un message : Warning: Cannot modify header information - headers already sent by (output started at…

J’ai cherché un peu sur internet mais j’ai pas trouvé grand chose et parfois je comprenait rien

il ne faut rien envoyer avec un header (du texte par exemple)

il retour à la ligne compte comme du texte.

Bonjour NeqO
e comprends toujours pas, de quel texte ?
est ce qu emon code est correcte ?

Le code l’est, sauf que c’est Location et qu’il faut utiliser des url (ie: http://xxx/) maintenant ce que te dis php c’est simple : tu envoies des entêtes après envoi de données (quelconques).

Vérifie si avant le <?php tu n'as pas un saut de ligne qui traine (en faisant gaffe justement aux caractères blancs après le ?> d’un fichier php inclut), ou si tu fais pas un print/echo inconditionnel avant.

[cpp]

<?php require_once("../compte/config_script.php"); $_SESSION["acc"]= $_GET["a"]; $acc= $_SESSION["acc"]; if(!@$_SESSION['idm'] || !$_SESSION['pseudom']) { if (isset($_GET['erreur2'])) { $erreur2=$_GET['erreur2']; if($erreur2=="pseudo") { echo"[b]"._PAGE_INDEX_ERRPSEUDO."[/b]"; } if($erreur2=="passe") { echo"[b]"._PAGE_INDEX_ERRPASS."[/b]"; } if($erreur2=="secure") { echo"[b]"._PAGE_INDEX_ERRLOG."[/b]"; } if($erreur2=="level") { echo"[b]"._PAGE_INDEX_LEVEL."[/b]"; } } echo"
Identifiez-vous

Pour poursuivre votre commande, vous dvez vous identifié

"._PAGE_INDEX_PSEUDO."
"._PAGE_INDEX_PASSE."

"; } else { switch ($acc) { case 'b' : header('location:index.php?i=b');break; case 'c' : header('location:index.php?i=c');break; } } ?>

[/cpp]

Effectivement je fais un echo avant donc c’est pour ca alors ?

Je dois me debrouiller pour placer mes header avant le echo c’est bien ca ?

Je vais essayer cette solution
Merci encore :slight_smile:

NAN ca marche toujours pas.

De plus je fais un include de ce script sur le site donc si y’a des echo derrière ca va pas marcher.
Enfin quand meme c’est bete juste a cause d’un echo.

Bon bah j’ai plus qu’a le faire en javascript

Sinon tu peux toujours mettre ta page en cache avec ob_start()[/url], faire tout tes petits truc (echo et header) dans n’importe quel sens et finalement afficher ta page avec [url=http://www.php.net/ob_end_flush]ob_end_flush()

alien > réfléchis. Ton echo se fait dans la partie “vrai” du if, donc ne joue pas sur l’autre partie “faux” du if, qui utilise header.

moralité? regarde …/compte/config_script.php : le problème est là.²

Je comprends pas y’a pas grand chose dans config_scripts.php

[cpp]<?php
define(“LANG”, “fr”);
require_once(“lang/”.LANG.".php");
require_once(“conf_variables.php”);
?>[/cpp]

Dans ce cas, faut farfouiller dans chaque fichier inclu jusqu’à trouver des sorties (ex: _<?php, etc)

Si vraiment tu n’arrives à éviter cette situation, utilise une fonction dans ce genre :

[cpp]
//Fonction de redirection
function redirect_url($url) {
echo “”;
}
[/cpp]

et après tu l’appelles de cette facon :

[cpp]
switch ($acc)
{
case ‘banderole’ : redirect_url(“index.php?i=banderole”);break;
case ‘casq’ : redirect_url(“index.php?i=casq”);break;
}
[/cpp]

Oui j’utilise ca vu que ca marche pas avec header, mais bon si javascript est desactivé, là y’aura un problème.