Bug Session en PHP [resolu]

Bug Session en PHP [resolu] - PHP - Programmation

Marsh Posté le 07-07-2007 à 21:36:24    

Bonjour à tous :)
Je viens de "découvrir" un bug assez bizarre dans un script php, et je l'ai résolu sans trop comprendre pourquoi ^^
Peut être quelqu'un pourra-t-il m'expliquer ?
 
Voici le problème :
 
fichier config.php

Code :
  1. $pass_commande_admin = 'hohoho';


 
fichier index.php (avec include config.php bien entendu :) )

Code :
  1. ....
  2. if (!isset($_SESSION['pass_commande_admin']) && (!empty($_POST['pass_commande_admin']) || !empty($_POST['sha1_pass'])))
  3. {
  4.  if(!empty($_POST['sha1_pass'])) $pass = trim(htmlentities($_POST['sha1_pass'], ENT_QUOTES));
  5.  elseif(!empty($_POST['pass_commande_admin'])) $pass = sha1('86e2829f444976040f6f743866df12ccsssccvxccf9198c82d1c'.trim($_POST['pass_commande_admin']).'86e2829f44497ddd6040f6f743866d12f9198c82d1c');
  6.  if ($pass == sha1('86e2829f444976040f6f743866df12ccsssccvxccf9198c82d1c'.$pass_commande_admin.'86e2829f44497ddd6040f6f743866d12f9198c82d1c'))
  7.  {
  8.   $_SESSION['pass_commande_admin'] = $pass;
  9.   header('location:admin_index.php?mod=gestion_commande');
  10.  }
  11.  else header('location:admin_index.php?mod=verif_commande');
  12. }


 
Et quand j'affiche $_SESSION['pass_commande_admin'], il m'affiche le contenu de $pass_commande_admin....... soit le mot de passe en clair, au lieu d'être crypté en sha1...
C'est normal ça ??
Une fois le $pass_commande_admin changé en $pass_gestion_admin dans le fichier config (en gros juste le nom change, j'ai suspecté que le problème venait de la variable de session qui portait le même nom), plus aucun problème... La variable $_SESSION['pass_commande_admin'] affiche alors bien le mot de passe en crypté...
Une suggestion ? :)
 
Le principe du script :
Un utilisateur envoie son mot de passe par un formulaire. Le mot de passe est directement codé en sha1 par l'intermédiaire d'un javascript placé en onSubmit.
On a donc a la sortie du formulaire les variables suivantes :
 
- $_POST['pass_commande_admin'] qui contient le mot de passe en clair.
- $_POST['sha1_pass'] qui contient le mot de passe crypté en sha1 par javascript.
- $pass qui crypte le mot de passe en sha1 si l'utilisateur a désactivé javascript, ou alors récupere juste le $_POST['sha1_pass'] dans le cas contraire.
- $pass_command_admin qui contient le mot de passe de référence (config.php) en clair.
 
Merci d'avance à celui qui aura le courage de dénouer pour moi ce mystère de "bug" :)


Message édité par Mister_Pingouin76 le 08-07-2007 à 13:10:23

---------------
Goldbarre [Gains:23€] | Eurobarre [Gains:18€]
Reply

Marsh Posté le 07-07-2007 à 21:36:24   

Reply

Marsh Posté le 07-07-2007 à 23:21:25    

tu dois avoir la variable php register_global a ON.. ce qui fait que PHP s'emmelent les pinceaux car toutes tes variables qu'elles soit en post en session ou juste avec un $ s'appelent pareils.
 
 

Reply

Marsh Posté le 08-07-2007 à 13:10:08    

Yes exact :)
Je n'y avais pas pensé :)
En effet en local je l'ai à Off par défaut, et sur free c'est activé :)
Merci encore :)


---------------
Goldbarre [Gains:23€] | Eurobarre [Gains:18€]
Reply

Sujets relatifs:

Leave a Replay

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