passage de variable

Le
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."";
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #23133301
Bonjour,

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

----------------------------------------------------------------
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
alainL
Le #23134441
Le 17/02/2011 01:36, Olivier Miakinen a écrit :
Bonjour,

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

----------------------------------------------------------------
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

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
Le #23134571
Bonjour,

Rappel du contexte :

----------------------------------------------------------------
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



À 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
alainL
Le #23135391
Le 17/02/2011 15:06, Olivier Miakinen a écrit :
Bonjour,

Rappel du contexte :


-----------------------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
Olivier Miakinen
Le #23135521
Le 17/02/2011 19:49, alainL a écrit :

Rappel du contexte :










-----------------------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
Pascal Poncet
Le #23138351
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
Mickael Wolff
Le #23139631
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.
Publicité
Poster une réponse
Anonyme