PHP dans formulaire et $_POST je dois cliquer deux fois ...

PHP dans formulaire et $_POST je dois cliquer deux fois ... - PHP - Programmation

Marsh Posté le 09-02-2010 à 05:46:25    

Bonjour, voici le code qui me pose problème, j'explique après:
 

Code :
  1. <FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  2. <input style="font-size:1.2em;font-family:Arial;" type="text" value="<?php echo $_POST['hash']; ?>" name="hash" /><br /><br />
  3. <select name="laconversion" onchange="this.form.submit();" size="6">
  4.   <option value="<?php echo strtolower(hash("md4",$_POST['hash'])); ?>">MD4</option>
  5.   <option value="<?php echo strtolower(hash("md5",$_POST['hash'])); ?>">MD5</option>
  6.   <option value="<?php echo strtolower(hash("sha1",$_POST['hash'])); ?>">SHA1</option>
  7.   <option value="<?php echo strtolower(hash("sha256",$_POST['hash'])); ?>">SHA256</option> 
  8.   <option value="<?php echo strtolower(hash("sha384",$_POST['hash'])); ?>">sha384</option>
  9.   <option value="<?php echo strtolower(hash("sha512",$_POST['hash'])); ?>">SHA512</option>   
  10. </select>
  11. </form>
  12. <?php
  13.   echo '<input style="font-size:0.7em;font-family:Arial" type="text" name="input" value="'.$_POST['laconversion'].'" size="180" />';
  14. ?>


 
- 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.
 
J'ai essayé plusieurs combinaisons et rien n'y fait.
 
De l'aide serait apprécié.

Reply

Marsh Posté le 09-02-2010 à 05:46:25   

Reply

Marsh Posté le 09-02-2010 à 10:30:08    

C'est une question de logique.
 
A. Coté client
A1. Saisie
A2. Selection
A3. OnChange-->Submit
B. Côté server
B1. hash(...)
C. Côté client
C1. Reaffichage de la page avec option value=la valeur hachée et le champ résultat ("input" ), qui ne contient pas encore le hachage
C2. Autre submit
D. Côté serveur
D1. Reception de $_POST['laconversion'] qui va pouvoir être mis dans le champ résultat.
 
Il faudrait faire, par exemple (non testé) :

<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 $res = strtolower(hash("md4",$_POST['hash'])); echo $res ?>">MD4</option>
  <option value="<?php $res = strtolower(hash("md5",$_POST['hash'])); echo $res ?>">MD5</option>
...
</select>
</form>
<?php
  echo '<input style="font-size:0.7em;font-family:Arial" type="text" name="input" value="'.$res.'" size="180" />';
?>

Reply

Marsh Posté le 09-02-2010 à 10:36:06    

Quelqu'un m'a mis sur la piste avec cette solution:  
 
<form action ="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 
<input type="text" value="<? echo $_POST['saisie']; ?>" name="saisie" /><br /><br />
 
<select name="hash" size="6" onchange="this.form.submit();">
  <option>md4</option>
  <option>md5</option>
  <option>sha1</option>
  <option>sha256</option>
  <option>sha384</option>
  <option>sha512</option>
</select>
<br /><br />
<?php
if( !empty($_POST['saisie']) && !empty($_POST['hash']) )
{
  echo $_POST['hash'];
  echo ' >>> ';
  echo hash($_POST['hash'],$_POST['saisie']);
}
?>
 
J'ai appris quelque chose avec votre explication. Donc, ça va pouvoir se compléter.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed