Discussion:
passage de variable
(trop ancien pour répondre)
alainL
2011-02-16 22:01:10 UTC
Permalink
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="***@wanadoo.fr";break;
case 2: $to="***@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
Olivier Miakinen
2011-02-17 00:36:59 UTC
Permalink
Bonjour,
Post by alainL
<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']){
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
alainL
2011-02-17 13:43:56 UTC
Permalink
Post by alainL
Bonjour,
<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']){
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
Olivier Miakinen
2011-02-17 14:06:42 UTC
Permalink
Bonjour,
Post by alainL
Post by Olivier Miakinen
<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']){
default: exit("Param.incorrect");
Affichage obtenu : Param.incorrect.
1) Sur lequel des deux liens as-tu cliqué ?
2) Que vaut $_REQUEST['to'] ?
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.
Post by alainL
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).
Post by alainL
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
alainL
2011-02-17 18:49:09 UTC
Permalink
Post by alainL
Bonjour,
<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']){
default: exit("Param.incorrect");
.............
Post by alainL
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 »,
............
Post by alainL
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
Olivier Miakinen
2011-02-17 19:25:21 UTC
Permalink
Post by alainL
<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']){
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*.
Post by alainL
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
Pascal Poncet
2011-02-18 17:38:42 UTC
Permalink
Post by alainL
<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
Mickael Wolff
2011-02-18 23:40:00 UTC
Permalink
Post by Pascal Poncet
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.

Continuer la lecture sur narkive:
Loading...