REDIRECTION PHP surprenante header("Locati

Résolu/Fermé
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 - 25 juil. 2012 à 21:49
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 - 26 juil. 2012 à 23:20
Bonjour,

J'ai un formulaire HTML qui transmet ses données à un module intégralement PHP.
Je sais qu'il ne faut aucune instruction HTML avant une redirection mais, là, ce ne peut être le cas !

Pour autant, j'ai 5 redirections à faire, dépendantes de test. Aucun test ne se fait sur les données, elles-mêmes: elles proviennent exclusivement de boutons radio avec values.
J'ai contrôlé la réception des 5 valeurs : toutes sont conformes !

Pourtant, toutes les redirections se font sur une seule adresse quelle que soit la lettre spécifiant le choix.
Je précise que j'ai créé tous les modules adressés ce qui est sans effet...
Lors des tests, c'était toujours la deuxième adresse qui était ciblée alors que je n'ai pas eu ce type de difficulté en redirection précédemment en utilisant le même modèle qui fonctionne :
	if (empty($_SESSION['Initiales']) )          // pas d'initiales donc pas d'autorisation en BD
		{
		Header('Location:/pgUTL/ConsPlanning.php');  // Aucun choix : seule Consult planning possible
		}
	else
		{
		Header('Location:/pgUTL/identifK.php');    // Envoi sur Choix traitement MàJ
		exit();
		}


Je joins donc le code à problème :
<?php              // MàJ RJL2725 
session_start();   // Ouvrir la session (venant de IdentifK)
// Prise en compte du choix :
$choix =($_POST['ChoixRep']);
// echo $Choix;
if ($choix = 'C') 
	{ 
	Header("Location:/pgUTL/ConsPlanning.php"); // Consultation Planning)
	}
if ($choix = 'M') 
	{
	Header("Location:/pgUTL/AdhMaJ.php");		// Modification (yc ajout|modif n° carte adh.)
	}	
if 	($choix = 'P') 
	{ 
	Header("Location:/pgUTL/FormPreInsc.php"); // PréInscription sans n° carte
	}
if ($choix = 'I')
	{ 
	Header("Location:/pgUTL/AdhInsc.php"); 	// Inscription (avec n° carte adh.)
	}
if ($choix = 'S')
	{
	Header("Location:/pgUTL/AdhSup.php");   	// Supression adhérent
	}	
?>


IMPORTANT : Incidemment, j'ai noté que l'adresse toujours utilisée était celle où existait un exit suite au header !
J'ai donc mis un exit, également, à la suite du premier Header : cette seule adresse était alors utilisée !
J'ai supprimé les 5 exit qui suivaient les Header...
Seule la dernière adresse AdhSup.php a été alors utilisée quelle que soit mon choix !

Merci des idées, conseils ou solutions que vous pourrez me transmettre
Bien cordialement RJL2725



7 réponses

Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 144
25 juil. 2012 à 21:56
Salut,

Petit souci dans tes if à vrai dire.
Tu fais if($choix = 'LETTRE') : à chaque condition, tu modifies la valeur de $choix en lui assignant la nouvelle valeur !
Pour comparer, tu dois faire $choix == 'LETTRE'. Tout rentrera dans l'ordre, mais n'oublie pas les exit après le header('Location...), toujours conseillé !
https://www.php.net/manual/fr/function.header.php
0
harderpod Messages postés 320 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 22 avril 2014 50
25 juil. 2012 à 22:03
tu transmet tes variables comment sur
$choix =($_POST['ChoixRep']);
c'est un champ iden hidden un input ? les valeur transmit sont elles bien attendu?

sinon tu peut aussi utiliser else if pour ton code
if ($choix = 'C') 
	{ 
	Header("Location:/pgUTL/ConsPlanning.php"); // Consultation Planning)
	}
else if ($choix = 'M') 
	{
	Header("Location:/pgUTL/AdhMaJ.php");		// Modification (yc ajout|modif n° carte adh.)
	}	
else if ($choix = 'P') 
	{ 
	Header("Location:/pgUTL/FormPreInsc.php"); // PréInscription sans n° carte
	}
else if ($choix = 'I')
	{ 
	Header("Location:/pgUTL/AdhInsc.php"); 	// Inscription (avec n° carte adh.)
	}
else($choix = 'S')
	{
	Header("Location:/pgUTL/AdhSup.php");   	// Supression adhérent
	}	
?>


tient moi au courant
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
25 juil. 2012 à 22:04
Bonjour Adrien,

Bon, je n'ai pas testé, mais j'y crois et j'aurai du penser que tu serais le premier à répondre !
BRAVO.
Je ne mets pas résolu mais je me dois de corriger et faire le test préalablement !
Il est vrai que, tout nouveau en PHP, j'ai du mal à utiliser le == pour les comparaisons qui marchent quad ce sont des signes doubles ou autres... Je vasi peut-être me mettre à employer !<> (lol)
@ bientôt RJL2725
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
25 juil. 2012 à 22:16
Bonsoir harderpod,
merci de l'intérêt porté au sujet.
J'avais contrôlé la transmission de mes 5 codes, bonne au moment de l'essai pour lequel j'avais supprimé les autres tests et headers !
De même, j'avais bien, initialement employé des else if mais je les ai bazardés pour passer au plus simples (on réduis la voilure dans les bourrasques).
Je mets la solution en autre réponse à Autumn'Tears pour lui confirmer son diagnostic.
Merci et au plaisir. RJL2725
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
25 juil. 2012 à 22:20
Salut Adrien,

La correction et le test n'ont pas été bien long et j'ai, au passage ajouté mes 5 EXIT.
J'ai regardé le cas qui fonctionnait : c'était surtout des tests par EMPTY !
Encore merci... car j'y ai passé une très large partie de l'après-midi... Je ne le regrette quand même pas car je serai alors impardonnable (voire irércupérable) si j'oublie le == de comparaison !
Amicalement RJL2725
0
Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 144
25 juil. 2012 à 22:26
Aucun souci !
Tu pourrais faire les mêmes conditions avec la structure switch/case !
0
Pour info, il y a aussi '===' :)
('a' == 0) => Vrai
('a'===0) => Faux

A utiliser quand on veut également tester le type de la variable
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
26 juil. 2012 à 11:17
Bonjour,
Ça davrait aller : je vais intégrer ce test qui, il est vrai, n'est pas équivalant à d'autres langages où le égal (=) fait tant affectation que comparaison, ces langages faisant la distinction par la présence ou non du IF préalable.
J'ai aussi approfondi le == comparé au ===, là aussi conséquence de variables non déclaratives : les facilités dans un sens se paient autrement !
Pour ma part, j'étais assez favorables aux déclaratives que je rendais obligatoires (option) :ça me signalais une faute d'orthographe dans une variable !
J'aime bien aussi la structure switch/case mais doit la voir plus en détail en PHP.
Bonne journée. RJL2726
0
Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 144
26 juil. 2012 à 18:09
En vérité, en PHP tu peux créer une variable dans un IF, il est effectivement beaucoup plus permissif que le C par exemple, mais il ne faut pas en profiter pour faire un tas de cochonneries...
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
26 juil. 2012 à 23:20
Je partage pleinement : il faut un minimum de rigueur faute de quoi on en arrive à ne plus pouvoir se relire : perte de temps et compréhension bien difficile quelques années après !
J'ai à la maison depuis 2000 une compta perso en Access (ayant transité par plusieurs versions) que mon épouse apprécie et ne veut pas quitter ; je suis presque catastrophé quand elle me demande une modif car c'est fou ce que l'on peut oublier... non seulement la logique mais même le langage (Access) que je ne pratique plus suffisamment !
Amiacalement RJL2726
0