begin process at 2012 05 31 04:28:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

PHP - switch avec redirection


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

PHP - switch avec redirection

lundi 12 avril 2010 à 16:38:59 | PHP - switch avec redirection

crisom

bonjour,
problème classique dont je n'ai pas trouvé la bonne reponse
j'ai dans la page 1 ( avec un include ('haut.php'); pour avoir un head commun à differentes pages (meta et CSS)
switch($ch){
case "1";header('location:page2.php');break;
case"2" ; header('location:page3.php');break;
....
les pages 3 et 2 contiennent le meme include pour avoir le meme head
Avec un nouvel hebergeur (claranet), qui ne gere pas le "output_buffering" du PHP ,je recois le message
"Cannot modify header information - headers already sent by (.. page1...page2 ...)"

avez vous une solution pour faire des redirections dans une page vers des pages différentes
merci
PS - éviter de m'injurier pour une question peut être simpliste
mardi 13 avril 2010 à 08:41:32 | Re : PHP - switch avec redirection

roymatthieu

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.
mardi 13 avril 2010 à 13:42:45 | Re : PHP - switch avec redirection

crisom

bonjour , et merci
la fonction go2Url fonctionne parfaitement
mardi 13 avril 2010 à 14:11:24 | Re : PHP - switch avec redirection

roymatthieu


Bon hé bien j'en suis heureux lol...

N'oublie pas d'indiquer que la réponse est accèptée... pour "clore" le sujet.

bat.


Cette discussion est classée dans : php, pages, header, switch, redirection


Répondre à ce message

Sujets en rapport avec ce message

Problème de redirection [ par alainG ] Après avoir créé un enregistrement dans une table à l'aide d'un formulaire, j'essaie de rediriger vers une liste de mon fichier sur une autre page av Redirection Php [ par lara0o ] Bonjour a toute la communauté,Alors je voudrais faire une redirection en php, mais sans utiliser la structure "header('Location : error.php')". Je m e Redirection header [ par alaise ] Bonsoir,J'ai un problème de redirection de page, pourtant j'utilise la fonction header.Les pages A et B sont des pages.php qui gèrent des templates.J' Redirection PHP ? [ par Sniperman113 ] Bonjour, J'aurai voulu savoir s'il était possible de rediriger un visiteur sans passer par javascript (donc uniquement en php) et sans utiliser header redirection type: php header 301 [ par robert2 ] Bonjour, Je suis débutant , je cherche de l'aide je voudrais savoir si le fait de faire une redirection: du type: exemple: <?php header("HTTP/ Server : Charset ? Header() ? .htacces ? [ par maximelien ] Bonjour, Cela fait plusieurs jours que je m'arrache les cheveux sur un problème que je rencontre sur mon hébergement.[^^confus3] J'ai développer un formulaire et php et redirection des pages [ par manelaissa ] bonjour voici ce code là index.php je veut si on clic s php variable et header [ par marine34000 ] Bonjour, J'ai déjà réussi a mettre des variables dans un header, mais la je ne comprend ps je n'y arrive plus j'ai un variable queje dois passer nor Probleme de header, message erreur "Cannot modify header information - headers already sent by..." [ par sebing ] Bonsoir, J'ai un message d'erreur qui apparait: [quote]Warning: Cannot modify header information - headers already sent by (output started at /mnt/159 htaccess et Index of [ par pop70 ] Bonjour, j'apprends depuis récemment le php, et je teste mes pages sur un site hébergé par umbreon. Je me suis aperçu d'un problème plutôt contraignan


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales