Formulaire, $_POST et PHP

Fermé
dan4 Messages postés 27 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 21 juillet 2013 - 9 févr. 2010 à 04:29
dan4 Messages postés 27 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 21 juillet 2013 - 9 févr. 2010 à 13:32
Bonjour, voici le code qui me pose problème, j'explique après:

<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<input style="font-size:1.2em;font-family:Arial;" type="text" value="<?php echo $_POST['hash']; ?>" name="hash" /><br /><br />

<select name="laconversion" onchange="this.form.submit();" size="6">
  <option value="<?php echo strtolower(hash("md4",$_POST['hash'])); ?>">MD4</option>
  <option value="<?php echo strtolower(hash("md5",$_POST['hash'])); ?>">MD5</option>
  <option value="<?php echo strtolower(hash("sha1",$_POST['hash'])); ?>">SHA1</option>
  <option value="<?php echo strtolower(hash("sha256",$_POST['hash'])); ?>">SHA256</option>  
  <option value="<?php echo strtolower(hash("sha384",$_POST['hash'])); ?>">sha384</option>
  <option value="<?php echo strtolower(hash("sha512",$_POST['hash'])); ?>">SHA512</option>    
</select>
</form>
<?php
  echo '<input style="font-size:0.7em;font-family:Arial" type="text" name="input" value="'.$_POST['laconversion'].'" size="180" />';
?>


- La première case est le texte qu'on doit mettre.
- La seconde est le choix de Hashage comme md5.
- Le troisieme est le résultat obtenu.

Quand je clique sur la seconde après avoir écris un texte, j'obtiens le mauvais code md5.
Mais dès que je clique une deusieme fois, j'obtiens le bon code md5.

Pour tester : si je mets autre chose qu'une variable ça marche à la place de :
<?php echo strtolower(hash("md4",$_POST['hash'])); ?>


J'ai essayé plusieurs combinaisons et rien n'y fait.

De l'aide serait apprécié. Je suis un peu désespéré.
A voir également:

2 réponses

Bonjour

Tu affiches toujours avec un temps de retard, regarde bien ce que tu fais...
Le select que tu proposes ne contient pas les chaines de hachage du texte affiché, mais du texte qui était affiché avant la validation du formulaire
À partir du moment où tu as écrit un texte :
. il faut que tu valides ton formulaire une fois pour que la hachage correspondant apparaisse dans le select
. il faut que tu valides une deuxième fois pour que la valeur choisie dans le select apparaisse dans le résultat.

Je ne sais pas ce que tu cherches vraiment à faire, mais à ta place, je donnerais au select les valeurs "md4", "md5", etc... et en fonction du choix du visiteur tu pourrais calculer du premier coup le résultat demandé
0
jambarr Messages postés 10 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 9 février 2010 2
9 févr. 2010 à 13:07
Limpide comme explication.
0
le père > jambarr Messages postés 10 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 9 février 2010
9 févr. 2010 à 13:14
Le problème avec ce genre de commentaire, c'est qu'on ne sait pas si c'est du premier ou du second degré
0
dan4 Messages postés 27 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 21 juillet 2013
9 févr. 2010 à 13:32
Voici la solution que j'ai pu obtenir de quelqu'un et des tests que j'ai fait avec modifications.
Finalement, le problème est réglé, merci d'avoir bien voulu me renseigner car les explications sont intéressantes.

Cette solution fonctionne et est efficace:

<form action ="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<input type="text" name="saisie" />

<select name="hash">
  <option value="md4">MD4</option>
  <option value="md5">MD5</option>
</select>

<input type="submit" value="Encoder" />

<?php
if( !empty($_POST['saisie']) && !empty($_POST['hash']) )
{
  echo hash($_POST['hash'],$_POST['saisie']);
}
?>


Ceci peut aider d'autres personnes et dans d'autres applications.
0