Page 1 sur 1

select option et $_POST dedans

Posté : 08 févr. 2010, 23:18
par dan4
Bonjour, voici le code qui me pose problème, j'explique après:

Code : Tout sélectionner

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

dans option à value: si je mets pas de variable, ça marche. Si non autrement,
je dois cliquer deux fois.

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.

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

De l'aide serait apprécié.

Re: select option et $_POST dedans

Posté : 09 févr. 2010, 12:48
par Ryle
Ta logique n'est pas la bonne... Ton premier champ contient ta valeur à crypter. Ton deuxième champ ne contient la valeur après cryptage qu'une fois que tu as soumis le formulaire. Enfin ton 3ème champ affiche la valeur du deuxième après soumission du formulaire.

Résultat, tu es obligé de soumettre deux fois le formulaire pour renseigner les trois champs, alors que tu pourrais demander à l'utilisateur de renseigner ses choix et ne soumettre qu'une seule fois :
<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" />

<select name="laconversion" onchange="this.form.submit();" size="6">
  <option value="md4">MD4</option>
  <option value="md5">MD5</option>
  <option value="sha1">SHA1</option>
  <option value="sha256">SHA256</option>  
  <option value="sha384">sha384</option>
  <option value="sha512">SHA512</option>    
</select>
</form>

<?php
  echo '<input style="font-size:0.7em;font-family:Arial" type="text" name="input" value="'. strtolower(hash($_POST['laconversion'], $_POST['hash'])); ?>.'" size="180" />';
?>
Le résultat du hashage est ainsi directement affiché au premier envoi, en combinant directement les deux valeurs spécifiées.
Tu peux ensuite compléter le select pour afficher le type de hashage sélectionné en ajoutant l'attribut "selected" dans l'option retenue :)