Réaffichage d'une valeur...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Réaffichage d'une valeur...

re:

par albius » 03 mars 2008, 15:07

Loupé! Tu m'as coupé l'herbe sur les pieds, dOm. Je m'apprêtais à éditer mon précédent message pour dire confirmer tout cela... Je viens d'en faire l'expérience...
Merci beaucoup! C'est vraiment plus clair maintenant... :merci:

par d0m » 03 mars 2008, 14:50

Non pas vraiment.

en venant de la page tiers, dans la page suppression tu as une valeur $_GET['codePostal2'] venant de l'url ou d'un formulaire...
Tu peux donc mettre cette variable en session dans la page suppression.
Par contre il faut tester avant si tu viens de la page tiers ou de confirmation.

Si tu viens de la page tiers => tu mets la variable en session
Si tu viens de la page de confirmation => tu ne la mets pas (en fait elle y est déjà lorsque tu étais la première fois sur la page suppression)

Pour tester les 2 cas, il suffit de tester l'existence de la variable $_GET['codePostal2'].
if(isset($_GET['codePostal2'])){
  //la variable existe donc on peut la mettre en session
  $_SESSION['code_postal'] = $_GET['codePostal2'];
}
else{
  // la variable n'existe pas donc on vient de la page de confirmation
  //donc la variable existe déjà en session
  //on ne fait donc rien
}

re:

par albius » 03 mars 2008, 13:30

Merci dOm pour ces précisions! Donc, si on se comprend bien, j'aurais dû déclarer ma session dès le premier fichier en somme... (car je ne l'ai fait qu'au niveau du fichier suppression)
merci,

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par d0m » 03 mars 2008, 10:37

Voilà c'est ça.
Voilà un petit schéma d'explication d'une suppression :

Code : Tout sélectionner

page "tiers" => page suppression => page confirmation =oui=> requête suppression =non=> page suppression
Tu arrive donc par 2 cas différents sur la page suppression.

En venant de la page tiers : $_GET['CodePostal2'] est défini donc la ligne
$_SESSION['CodePostal'] = $_GET['CodePostal2'];
se passe comme tu veux.

En venant de la page de confirmation : $_GET['CodePostal2'] n'est pas défini (d'ailleurs tu devrait avoir une erreur te le disant) donc la ligne
$_SESSION['CodePostal'] = $_GET['CodePostal2'];
ne se passe comme tu veux et $_SESSION['CodePostal'] se retrouve vide.
En l'affichant donc dans le formulaire :<input name="ModifCodePostal" type="text" id="ModifCodePostal" value="<?php echo $_SESSION['CodePostal']; ?> tu te retrouveras donc avec un champ texte vide au lieu du code postal.

L'idée est donc de n'exécuter la ligne
$_SESSION['CodePostal'] = $_GET['CodePostal2']
que dans le cas ou tu viens directement de ta page tiers. Dans l'autre cas, il ne faut pas toucher au code postal en session puisqu'il y est déjà.

re:

par albius » 03 mars 2008, 10:25

Bonjour,

Trois personnes qui me répondent sensiblement la même chose, sans pour autant que je saisisse exactement ce que vous voulez dire... Vous parlez bien de '$_GET['CodePostal2']' qui est envoyé en fait d'un fichier tier, qui se situe en amont, et que je n'ai pas encore mentionné. C'est en fait une chaîne de trois fichiers : listeZg.php > codePostalModif.php > confirm_suppression.php. Je peux très bien comprendre que $_GET['CodePostal2']' soit vide si je reviens uniquement à mon fichier de suppression (codePostalModif.php) l'envoie de CodePostal2 n'existant plus (listeZg.php)... est-cela que vous voulez dire ?

merci,

par d0m » 29 févr. 2008, 16:17

La session est opérationnelle pendant le va et vient.
Ce qui cloche c'est le moment ou tu met une valeur dans $_SESSION['CodePostal'].

Dans la page suppression, tu as la ligne :
$_SESSION['CodePostal'] = $_GET['CodePostal2']; 
Lorsque tu arrives pour la première fois dans la page suppression, tout est ok car $_GET['CodePostal2'] est défini et vaut le code postal.

Par contre lorsque tu ne confirmes pas et que tu renvoie sur la page de suppression, $_GET['CodePostal2'] n'est pas défini car tu ne l'envoie pas de la page de confirmation à la page de suppression.
Et donc $_SESSION['codePostal'] prend une valeur vide.

Il faut donc avant de mettre $_GET['CodePostal2'] en session, tester si $_GET['CodePostal2'] est bien défini :
<?php
if(isset($_GET['CodePostal2']))
  $_SESSION['codePostal'] = $_GET['CodePostal2']

par Hywan » 29 févr. 2008, 16:13

Bonjour,

je crois que tu fais une confusion.
Dans ta page de suppression, tu as les données de ton formulaire via $_POST. Tu transferts tes données dans $_SESSION, puis redirige vers confirm_suppression.php, où là, tu travailles sur $_POST, mais il n'existe plus !
Dans ton fichier de confirmation, travaille sur $_SESSION et non $_POST. Ça ira mieux :).

par guilt92 » 29 févr. 2008, 16:13

Cela me parait normal...

En effet tu fais un $_SESSION['CodePostal'] = $_GET['CodePostal2']; sans vérifier que :

1/ il y ai bien une valeur dans $_GET['CodePostal2'];
2/ $_SESSION['CodePostal'] ne soit pas deja defini.

donc quand tu reviens sur cette page si tu viens d'une autre page que celle qui transmet CodePostal2 il affecte une valeur vide à ta variable de session...

j'opterais pour une petite série de test avant l'affectation de la variable :
if(isset($_GET['CodePostal2'])) $_SESSION['CodePostal'] = $_GET['CodePostal2'];
Ensuite je ne sais pas comment tu gères le changement de code donc je n'en dirais pas plus mais par exemple ajouter la condition !isset($_SESSION['CodePostal']) ou !empty($_SESSION['CodePostal']) peut etre utile...

Réaffichage d'une valeur...

par albius » 29 févr. 2008, 15:56

Bonjour,

l'utilisateur est appelé à supprimer une valeur via un formulaire... Pour faire correctement les choses, lorsque celui-ci valide la suppression, il est envoyé sur un autre fichier lui demandant la confirmation ou l'annulation... S'il annule, il revient sur le fichier précédent... Mon souci est que la valeur a disparu entretemps...
J'essaye d'utiliser les SESSIONS pour palier à cela, mais je n'ai pas non plus beaucoup plus de succès...
Du moins, la session est opérationnelle du fichier de suppression à celui de demande de confirmation, puisque ladite valeur s'affiche bien dans ce dernier, mais l'inverse ne se vérifie pas...
Dans mon fichier suppression, j'ai:
// initialisation de la session
session_start() ;
$_SESSION['CodePostal'] = $_GET['CodePostal2'];
// affichage de la valeur dans le formulaire, que je voudrais bien voir apparaître lorsque j'annule
<input name="ModifCodePostal" type="text" id="ModifCodePostal" value="<?php echo $_SESSION['CodePostal']; ?>" size="5" />
// validation et redirection
<input name="supprimer" type="submit" id="supprimer" value="Supprimer" />
if(isset($_POST['supprimer'])){
header('location: confirm_suppression.php');
} 
Dans mon fichier de confirmation:
session_start() ;
if( $_POST['envoyer'] == 'Confirmer'){requête...
}
if( $_POST['envoyer'] == 'Annuler'){// on revient au fichier précédent
header('location: codePostalModif.php');
}
Je pense que quelque chose doit m'échapper... merci.