Salut,
T'injuriez ! Quelle drôle d'idée, faudra que je le note sinon, je vais oublier.
Nous sommes tous passé par des problèmes classiques pour certains et compliqués pour d'autre. Ce qui est chiant, ce sont les personnes qui ne cherches pas l'information.
exemple ici.
Ton problème est simple en théorie mais super chiant.
La première étape est de trouver ce qui génère l'erreur à savoir la déclaration de code html...
Un espace, un "echo" peuvent parfois poser problème...
Si cela ne saute pas aux yeux de suite, débugge ton code en partant de la première ligne jusqu'au la dernière en commentant d'abord l'ensemble des lignes de codes et ensuite de moins en moins de lignes...
Tu vas alors savoir précisément à partir de quelle série d'instruction cela pose problème et cela te permettra d'identifier la source.
Un fois que tu connais ce qui génère l'erreur (la ligne de code xxx, la fonction, ...) poste celle-ci sur le forum...
Attention... dans le cas d'un "Cannot modify header information", surtout dans le cas d'un "Cannot modify header information", ce n'est pas forcement la ligne indiquée qui pose problème mais une autre situé plus haut dans l'ordre d'exécution du script...
Une erreur générée plus haut par exemple est considéré comme une "sortie"... un affichage si tu veux et de ce fait, foire le reste.
exemple:
ligne 1 : parse error affiché à l'écran.
ligne 2 : écriture d'un cookie.
Il est clair que la première ligne génére une erreur qui sera affichée à l'écran, la seconde ligne aura pour erreur un "Cannot modify header information - bla bla bla bla, c'est la merde, je veux rien savoir".
La structure même de ton "switch" m'inquiète car elle présente des erreurs...
Code PHP :
switch($ch){
case "1" ; header('location:page2.php') ;break;
case "2" ; header('location:page3.php') ;break;
}
1: Je suis certain que c'est case "1"
: et non
; voir la doc
ici.
2: Selon ton code est-ce bien un string que tu attends pour case
"1" et case
"2" car entre guillemets, c'est une chaine de caractère... (si $ch est bien une chaine et non un entier alors y a pas de soucis).
3: Toute instruction "header" visant à rediriger doit se terminer par un exit(); sinon, il me semble que le serveur continue l'exécution du code mais redirige quand même.
4: Indente ton code, ça ne consomme pas plus de ressource et c'est plus lisible.
Essaye ceci :
Code PHP :
switch($ch){
case "1" :
header('Location :page2.php');
exit();
break;
case "2" :
header('Location :page3.php');
exit();
break;
default:
echo 'Valeur inconnue';
}
Pour ce qui est des redirections... j'utilise personnellement la fonction suivante :
Code PHP :
function go2Url($url){
/*
Redirige vers la page 'x' et privilégie la redirection
via la commande header si ceux-ci n'ont pas déjà été envoyés.
Sinon utilise une balise 'meta' afin de rediriger vers la page.
*/
$url = trim($url);
if(headers_sent() == false){
header('Location: '.$url); // Redirection vers l'url donnée.
// Interruption du script.
exit();
}
// Redirection vers l'url donnée et interruption du script.
exit('<html><head><meta http-equiv="refresh" content="0;URL='.$url.'" /></head><body></body></html>');
}
go2Url('http://www.monsite.com');
go2Url('page error');
if(headers_sent() == false)... me permet de savoir si les headers ont déjà été envoyés et n'exécute pas le code si c'est le cas.
J'espère avoir su t'aider...
Bien à toi.