PHP-MySQL : insert encrypt password ... Décrypter ? [Résolu]

PHP-MySQL : insert encrypt password ... Décrypter ? [Résolu] - PHP - Programmation

Marsh Posté le 05-03-2004 à 20:36:12    

Bonsoir !
J'insère des users + passwords dans une table mysql via un bête INSERT (dans un script) et j'encrypte le password ...
Comment fair en sorte que quand je tape le password, celui-ci soit "décrypté" et validé (ce qui ne me semble pas être le cas) ?
Pt'être qu'il y a plus simple en fait ...  :??:
 
Merci !


Message édité par Mosca le 07-03-2004 à 20:54:08
Reply

Marsh Posté le 05-03-2004 à 20:36:12   

Reply

Marsh Posté le 05-03-2004 à 20:58:30    

Deja il faudrait savoir comment tu encrypte le password, sinon on peut pas t'aider.
 
De plus, ce n'est pas le password en clair que tu compare, mais plutot la version cryptee.
 
Je m'explique, tu as le password crypte dans ta bdd, ensuite l'user rentre sont password, tu crypte se password via la meme methode, ensuite tu compares les 2 chaines, le password crypte entre par l'utilisateur, et le password crypte dans la bdd.
 
Si les deux correspondent alors le password est ok, si ce n'est pas le cas, alors le password entre par l'utilisateur n'est pas bon.

Reply

Marsh Posté le 05-03-2004 à 21:07:05    

Pour encrypter je fais "INSERT INTO ...ENCRYPT ($password" )...(password passé dans un formaulaire en POST)
Donc je dois faire en sorte que le password entré par le user soit crypté, puis comparé à celui qui est stocké, c'est ça ?
(au fond ça me semble évdent ...)
 
Le truc, c'est que je veux tester si le user/pass est valide ou non pour accéder aux pages (des query en fait) : pour ça je fais un select sur la table, si num_row = 0 => invalide ...
Ouais, je sais, ça doit pas être le top ... :/
Mais si vous connaissez de bonnes méthodes pour ces vérifs, je suis preneur ... :)
D'autant que je dois plus tard valider une requête si le code user correspond au code de ce qur quoi il fait la requête (user_code = 200 => requête sur objet 250 : refusé ! etc ...)
En plus je passe par une table user en MySQL pour des query sur Oracle ... Bref : tout conseil est grandement appécié ! :)

Reply

Marsh Posté le 05-03-2004 à 22:06:34    

C'est simple, tu encryptes le mdp qu'un utilisateur rentre, et tu le compare à celui déjà entrée...
 
if ( encrypt($password) != $pass_db ){
      echo "Mauvais mdp!";
}
 
(Ok c nul)

Reply

Marsh Posté le 05-03-2004 à 23:56:15    

letouriste a écrit :

C'est simple, tu encryptes le mdp qu'un utilisateur rentre, et tu le compare à celui déjà entrée...
 
if ( encrypt($password) != $pass_db ){
      echo "Mauvais mdp!";
}
 
(Ok c nul)
 


 
Il peut aussi haché le mdp en md5 au moment de l'inscription (donc le password est deja haché quand on le rentre dans la bdd avec un simple INSERT), puis quand le visiteur veut s'authentifier tu verifie si le login/pass correspondent:

Code :
  1. $requete = 'SELECT passwordHaché FROM Comptes WHERE login="'.$_POST['FormLogin'].'"';
  2. // execution requete
  3. if(md5($_POST['FormPassword']) == $row['passwordHaché'])
  4. {
  5.    $_SESSION['login'] == $_POST['FormLogin'];
  6. }


 
Et à chaque début de page protégé tu verifie si le level du login enregistré lui permet d'afficher la page (soit tu enregistre le level aupréalable dans une variable de session comme pour le login, soit tu le recupere à partir du login avec une requete à chaque debut de page), si il a le droit tu affiche, sinon tu le renvoie sur le formulaire d'authentification(si il n'est pas enregistré du tout) ou tu lui indique que son level n'est pas suffisant.
 
ps: si y'a des accents dans mon code, c'est uniquement pour la comprehension ;)


Message édité par aspegic500mg le 05-03-2004 à 23:57:14
Reply

Marsh Posté le 06-03-2004 à 18:29:36    

Ok, c'est bon ! Ouf !
Merci !
Je suis passé par MD5 ...
J'avais mal positionné l'encryption au début.
Je suppose que d'avoir défini une taille de colonne de 8 pour le password posait aussi problème ...
 
Thx again!

Reply

Marsh Posté le 07-03-2004 à 13:54:37    

Rha !
J'ai un autre problème maintenant.
Du fait que je passe par md5, le teste lors du register ne vérifie plus si le champ password est vide, et enregistre le user avec un password vide (et crypté) :/
Ca marchait bien avant, sans le md5 ...
Voilà le code (on se moque pas, c'est un peu barbare)
Comment fair pour qu'il teste le champ password en gardant le md5 ?
 

Code :
  1. <?php
  2. include("mysql_conn.inc" );
  3. $db=mysql_select_db('auth');
  4. $username = $HTTP_POST_VARS["username"];
  5. $password = md5($HTTP_POST_VARS["password"]);
  6. if ($username != "" AND $password != "" )
  7. {
  8.   mysql_query("INSERT INTO user (username,password) values ('$username','$password')" );
  9.  if (mysql_error())
  10.  {
  11.  echo "<html><body><center><a href=\"register.php\">User already exists! Return to register page</a></center></body></html>";
  12.  }
  13. else
  14. {
  15. echo "<html><body><center><a href=\"register.php\">\"Registration successful!\"</a></center></body></html>";
  16. }
  17. }
  18. elseif (empty($username))
  19. {
  20. echo "<html><body><center><a href=\"register.php\">\"You must enter a username!\"</a></center></body></html>";
  21. }
  22. elseif (empty($password))
  23. {
  24. echo "<html><body><center><a href=\"register.php\">\"You must enter a password!\"</a></center></body></html>";
  25. }
  26. else
  27. {
  28. echo "<html><body><center><a href=\"register.php\">\"Registration successful!\"</a></center></body></html>";
  29. }
  30. ?>


 
EDIT : résolu ...  :sarcastic:


Message édité par Mosca le 07-03-2004 à 20:54:36
Reply

Marsh Posté le 08-03-2004 à 13:21:20    

et $HTTP_POST_VARS c'est obsolète, utilise $_POST ;)

Reply

Sujets relatifs:

Leave a Replay

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