Titag Posté 20 Octobre 2004 Posté 20 Octobre 2004 (modifié) Chez moi ce code marche : <?if ($bouton== "zero") { $euros=""; $francs=""; $marks=""; } if ($bouton=="convertir") { if(empty($francs) and empty($marks) and isset($euros)) { $francs = round(100*$euros*6.55957-0.01)/100; $marks = round(100*$euros*1.95583-0.01)/100; } if(empty($euros) and empty($marks) and isset($francs)) { $euros = round(100*$francs/6.55957-0.01)/100; $marks = round(100*$francs/3.353855-0.01)/100; } if(empty($euros) and empty($francs) and isset($marks)) { $euros = round(100*$marks*0.511292-0.01)/100; $francs = round(100*$marks*3.353855-0.01)/100; } } ?> <form method="post" action="convert.php"> <p><input type="text" size="10" name="euros" value="<? echo $euros;?>"> Euros<br></p> <p><input type="text" size="10" name="francs" value="<? echo $francs;?>"> Francs<br></p> <p><input type="text" size="10" name="marks" value="<? echo $marks;?>"> Marks<br></p> <p><input type="submit" value="convertir" name="bouton"> <input type="submit" value="zero" name="bouton"></p> </form> Modifié 20 Octobre 2004 par Titag
Titag Posté 20 Octobre 2004 Posté 20 Octobre 2004 Et tu sais pourquoi ? Parce que tu fait un test en utilisant la fonction empty(). Or sur la remise à zero tu initialise tes variables avec un espace (" ") et non un caractere nul ("")... d'où erreur
Gribouille26 Posté 20 Octobre 2004 Auteur Posté 20 Octobre 2004 Attends, j'étais en train d'halluciner, vraiment!!! Et tu sais pourquoi ? Parce que tu fait un test en utilisant la fonction empty(). <{POST_SNAPBACK}> Tu veux dire quoi par là? Je veux absolument comprendre, là....
xpatval Posté 20 Octobre 2004 Posté 20 Octobre 2004 Après avoir vu ta page, je réaffirme ce que je disais. Il te faut plusieurs cas. cas 0: rien n'ai saisi. donc on saisit. cas 1: la zone A est saisie, on convertit B et C OU on reset cas 1: la zone B est saisie, on convertit A et C OU on reset cas 1: La zone C est saisie, on convertit A et B OU on reset. Tu dois démarrer l'écriture de ton script en vérifiant si le reset a été activé. Si c'est le cas, "marqueur" = 0 Si ce n'est pas le cas: On initialise un "marqueur" si celui-ci n'a pas déjà été valorisé. switch Cas 0: formulaire de saisie. PLUS valorisation du marqueur à 1. on soumet (en plaçant un <input type="hidden" name="marqueur" value=1>, que j'ai oublié de préciser lors de mon premier post) Cas 1: Test de la zone saisie, conversion et affichage des zones converties. avec affichage d'un bouton reset. Dans ce formulaire, si tu cliques sur le bouton reset, le "marqueur" sera valorisé à 0. Comme tu réaffiche ta page, tu passes dans le test de condition du reset en tt début de script, et tu repars avec un marqueur = 0, donc, un cas 0. tu peux ressaisir...
Gribouille26 Posté 20 Octobre 2004 Auteur Posté 20 Octobre 2004 D'accord, je comprend mieux ce que tu veux dire Xpatval... On fait la même chose, mais de deux façons différentes, en gros! Ta solution à l'air plus "conventionnelle", mais comme elle n'est pas encore aussi claire que celle que j'ai utilisée, je crois que je vais garder la mienne pour le moment et me pencher sur le "plus conventionnel" une autre fois... Merci.
Titag Posté 20 Octobre 2004 Posté 20 Octobre 2004 Par exemple : if(empty($francs) and empty($marks) and isset($euros)) empty "dit" si la variable est vide ou non... or une variable qui contient un espace comme tu l'initialise dans le if ($bouton == "zero") n'est pas vide. C'est pour ca qu'il fait la conversion qu'une seule fois... au 1er chargement de la page.
Gribouille26 Posté 20 Octobre 2004 Auteur Posté 20 Octobre 2004 D'accord!! Merci! Euh... Si j'ose une question subsidiaire: Je lisais pendant mes recherches qu'il faut mettre ses variables en $_POST['variable'] . C'est plus sécurisé... Je comprend pas ce qu'il faut faire concrètement....
xpatval Posté 20 Octobre 2004 Posté 20 Octobre 2004 Je comprend pas ce qu'il faut faire concrètement.... Tout simplement, depuis une certaine version de php, le paramètre de configuration REGISTER_GLOBALS, qui était à ON, par défaut, a été passé à OFF, par défaut aussi. Autrefois, et quelque soit la méthode utilisée (post, get, cookie...), tu n'avais pas besoin d'initialiser tes variables. Ce qui avait, entre autre, pour conséquence un risque certain lors de passages de paramètres dans une url (http://www.monsite.com?var1=...&var2=...). N'importe qui pouvait rentrer dans l'url n'importe quel paramètre... Dorénavant, tu dois initialiser les variables que tu vas utiliser. Si quelqu'un souhaite saisir n'importe quoi dans ton url, le paramètre (sa variable) n'existant pas, le risque est amoindri. Il te faut faire, pour chaque variable: $tavariable = ( isset ( $_POST['tavariable'] ) ) ? $_POST['tavariable'] : '';ou$tavariable = ( isset ( $_GET['tavariable'] ) ) ? $_GET['tavariable'] : '';
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant