Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

passage de variable

7 réponses
Avatar
alainL
Bonjour,
Je voudrais modifier un script de formulaire de contact afin de
l'utiliser pour l'une ou l'autre de deux adresses différentes.

J'ai donc voulu ajouter cela :
--------------------------------------------------------------
Dans la page html qui appelle le form : deux liens:

<p><a hrf="formgenet.php?to=1">Contact mairie</a><br> (avec href correct)
<p><a hrf="formgenet.php?to=2">Contact auteur</a><br>
----------------------------------------------------------------
dans la page php :

...........
....... $corps.="Message : ".$f_5."\n";
switch($_REQUEST['to']){
case 1: $to="mairie@wanadoo.fr";break;
case 2: $to="site@alos.com";break;
default: exit("Param.incorrect");
}
if(mail($to, $titre, stripslashes($corps), $tete)){
$ok_mail="true";
}
...............
-------------------------------------------------------------

Affichage obtenu : Param.incorrect.

Le form. fonctionnait avec une adresse en clair à la place du $to...

Merci pour votre aide.
--
AlainL

--
AlainL

http://autourdalos.fr

7 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 16/02/2011 23:01, alainL a écrit :

<p><a hrf="formgenet.php?to=1">Contact mairie</a><br> (avec href correct)
<p><a hrf="formgenet.php?to=2">Contact auteur</a><br>
----------------------------------------------------------------
switch($_REQUEST['to']){
case 1: $to="";break;
case 2: $to="";break;
default: exit("Param.incorrect");

Affichage obtenu : Param.incorrect.



1) Sur lequel des deux liens as-tu cliqué ?

2) Que vaut $_REQUEST['to'] ?

Cordialement,
--
Olivier Miakinen
Avatar
alainL
Le 17/02/2011 01:36, Olivier Miakinen a écrit :
Bonjour,

Le 16/02/2011 23:01, alainL a écrit :

<p><a hrf="formgenet.php?to=1">Contact mairie</a><br> (avec href correct)
<p><a hrf="formgenet.php?to=2">Contact auteur</a><br>
----------------------------------------------------------------
switch($_REQUEST['to']){
case 1: $to="";break;
case 2: $to="";break;
default: exit("Param.incorrect");

Affichage obtenu : Param.incorrect.



1) Sur lequel des deux liens as-tu cliqué ?

2) Que vaut $_REQUEST['to'] ?

Cordialement,



Merci.
Les liens sont corrects, ils ouvrent bien la page php voulue. (mais
<a href...> semble donner des vertiges à mon courrielleur ?)

Effectivement, $_REQUEST['to'] est vide. j'ai essayé $_GET qui donne le
même résultat...
Je ne comprends pas ce qui se passe . La page php contient plusieurs
passages en html... cela pourrait-il influer ?
Je nage depuis ce matin. ;-(


--
AlainL
Avatar
Olivier Miakinen
Bonjour,

Rappel du contexte :

<p><a hrf="formgenet.php?to=1">Contact mairie</a><br> (avec href correct)
<p><a hrf="formgenet.php?to=2">Contact auteur</a><br>
----------------------------------------------------------------
switch($_REQUEST['to']){
case 1: $to="";break;
case 2: $to="";break;
default: exit("Param.incorrect");

Affichage obtenu : Param.incorrect.



1) Sur lequel des deux liens as-tu cliqué ?

2) Que vaut $_REQUEST['to'] ?





Le 17/02/2011 14:43, alainL m'a répondu :

Les liens sont corrects, ils ouvrent bien la page php voulue. (mais
<a href...> semble donner des vertiges à mon courrielleur ?)



À ton nouvelleur, tu veux dire ? Probablement une protection antispam
mal foutue, soit dans le nouvelleur lui-même, soit sur le serveur de
nouvelles. De toute façon ce n'est pas le sujet ici.

Effectivement, $_REQUEST['to'] est vide.



Tu n'as répondu qu'à la deuxième question, dont d'ailleurs je me doutais
bien de la réponse.

La première question était : sur quel lien as-tu cliqué *avant* que ce
code ne soit exécuté. Il me semble que la réponse est « sur aucun »,
auquel cas tu es exactement dans la même situation que Pascale (c'est
marrant que vous ayez posé vos deux questions en même temps).

Je ne comprends pas ce qui se passe . La page php contient plusieurs
passages en html... cela pourrait-il influer ?
Je nage depuis ce matin. ;-(



Ce que je crains, c'est que depuis le temps que tu fais du HTML et du
PHP tu n'aies pas encore une idée claire des interactions entre les
deux, et que tu ne saches pas encore que le résultat d'un formulaire
ne peut pas être traité par la même instance d'exécution de PHP que
celle qui a généré ce même formulaire.

Dis-moi que je me trompe !

--
Olivier Miakinen
Avatar
alainL
Le 17/02/2011 15:06, Olivier Miakinen a écrit :
Bonjour,

Rappel du contexte :

<p><a hrf="formgenet.php?to=1">Contact mairie</a><br> (avec href correct)
<p><a hrf="formgenet.php?to=2">Contact auteur</a><br>

-----------------------dans le code de formgenet.php ---------------------
switch($_REQUEST['to']){
case 1: $to="";break;
case 2: $to="";break;
default: exit("Param.incorrect");









.............

La première question était : sur quel lien as-tu cliqué *avant* que ce
code ne soit exécuté. Il me semble que la réponse est « sur aucun »,


............

Ce que je crains, c'est que depuis le temps que tu fais du HTML et du
PHP tu n'aies pas encore une idée claire des interactions entre les
deux, et que tu ne saches pas encore que le résultat d'un formulaire
ne peut pas être traité par la même instance d'exécution de PHP que
celle qui a généré ce même formulaire.

Dis-moi que je me trompe !



Oui, le problème doit bien être là ! Mais le form et le traitement sont
sur la même page qui se recharge avec

<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>

et je ne vois pas trop comment passer la variable to , que je ne
parviens d'ailleurs pas à récupérer, quel que soit l'endroit du code où
je place le echo $_REQUEST['to']



--
AlainL
Avatar
Olivier Miakinen
Le 17/02/2011 19:49, alainL a écrit :

Rappel du contexte :

<p><a hrf="formgenet.php?to=1">Contact mairie</a><br> (avec href correct)
<p><a hrf="formgenet.php?to=2">Contact auteur</a><br>









-----------------------dans le code de formgenet.php ---------------------
switch($_REQUEST['to']){
case 1: $to="";break;
case 2: $to="";break;
default: exit("Param.incorrect");







[...]



Oui, le problème doit bien être là ! Mais le form et le traitement sont
sur la même page qui se recharge avec

<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>



Nous y voilà. Et donc la première fois tu as $_REQUEST['to'] qui n'est
pas initialisé, et la seconde fois il l'est. C'est le comportement
*normal*.

et je ne vois pas trop comment passer la variable to , que je ne
parviens d'ailleurs pas à récupérer, quel que soit l'endroit du code où
je place le echo $_REQUEST['to']



Tout simplement tu ne la passes pas ! Elle n'existe pas puisque le
visiteur n'a encore rien choisi : tu ne vas pas l'inventer.

Tu remplaces ton « exit("Param.incorrect"); » par un « exit; » (après
avoir fini d'envoyer la page HTML du formulaire), et tu attends que
l'utilisateur valide le formulaire pour avoir un truc à faire.

Et si vraiment tu ne comprends toujours pas, alors force-toi à écrire
*deux* pages web différentes, l'une présentant le formulaire sans le
traiter, et l'autre traitant la réponse au formulaire. C'est seulement
quand tu auras une vraie compréhension des mécanismes que tu pourras
t'amuser à fusionner ces deux pages en une seule.

Cordialement,
--
Olivier Miakinen
Avatar
Pascal Poncet
Le 17/02/2011 19:49, alainL a écrit :
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>



Bonjour,

Au passage, pour que la variable $PHP_SELF soit disponible, il faut que
la directive "register_globals" soit activée. Or, elle ne l'est plus
depuis la version 4.2, pour des raisons de sécurité.
=> voir avertissement [http://fr.php.net/variables.predefined]

A la place, il faut utiliser le tableau super-global $_SERVER et, en
l'occurrence, son élément $_SERVER['PHP_SELF'].
=> voir [http://fr.php.net/manual/fr/faq.using.php#faq.register-globals]


--
Cordialement,
Pascal
Avatar
Mickael Wolff
On 18/02/11 17:38, Pascal Poncet wrote:
A la place, il faut utiliser le tableau super-global $_SERVER et, en
l'occurrence, son élément $_SERVER['PHP_SELF'].
=> voir [http://fr.php.net/manual/fr/faq.using.php#faq.register-globals]



Pour être complet, il faut aussi ne pas utiliser le contenu de
$_SERVER['PHP_SELF'] sans dicernemant, comme c'est le cas dans le script
de l'OP.