Sessions

Sessions - PHP - Programmation

Marsh Posté le 23-07-2006 à 23:51:34    

Salut tout le monde... bon voila j'ai un problème que je n'arrive pas à résoudre à propos des sessions.  
Voici le code :  
 
session_start(); // début de session
 
if (isset($_POST['login'])) {
 $login = addslashes($_POST['login']); // mise en variable du nom d'utilisateur
 $pass = addslashes(md5($_POST['pass'])); // mise en variable du mot de passe chiffré à l'aide de md5
 
// requete sur la table administrateurs (on récupère les infos de la personne)
mysql_select_db($database_dbprotect, $dbprotect);
$verif_query=sprintf("SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'" );
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);
 
 
 if ($utilisateur) { // On test s'il y a un utilisateur correspondant
 
     session_register("authentification" ); // enregistrement de la session
   
  // déclaration des variables de session
  $_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur
  $_SESSION['login'] = $row_verif['login']; // Son Login
   
  header("Location:admin.php" ); // redirection si OK
 }
 
Donc ceci est mon fichier index.php et tout a l'air de marcher... Ceci me renvoie dans un fichier admin.php qui se charge d'insérer un utilisateur dans une table... le probleme est que lorsque j'insere cet utilisateur, le tableau $_SESSION est modifié avec les infos du nouvel utilisateur ajouté ! C'est a n'y rien comprendre !
 
 session_start(); // On relaye la session
 if (session_is_registered("authentification" ) && $_SESSION['privilege'] == "admin" ){ // vérification sur la session authentification (la session est elle enregistrée ?)
// On vérifie également si la session ouverte est bien une session admin et on place ici les éventuelles actions en cas de réussite de la connexion
 }
else {
header("Location:index.php?erreur=intru" ); // redirection en cas d'echec
}
?>
<?php  
// ------ AJOUT D'UN UTILISATEUR --------
if(isset($_POST['login'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
 if(($_POST['login'] == "" ) || ($_POST['pass'] == "" )){ // si login ou mot de passe non spécifiés >> message d'erreur
  header("Location:admin.php?erreur=empty" );
 }
 else if($_POST['pass'] == $_POST['pass2']){ // on vérifie si le mot de passe et le mot de passe confirmé ont la même valeur
  // on passe toutes les variables $POST en variables
  $login = $_POST['login'];
  $pass = md5($_POST['pass']); // ici, on crypte le mot de passe à l'aide de MD5 (c'est tout simple non ? :)
  $nom = $_POST['nom'];
  $prenom = $_POST['prenom'];
  $privilege = $_POST['privilege'];
  // on fait l'INSERT dans la base de données
  $add_user = sprintf("INSERT INTO utilisateurs (login, pass, nom, prenom, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$privilege')" );
    mysql_select_db($database_dbprotect, $dbprotect);
    $result = mysql_query($add_user, $dbprotect) or die(mysql_error());
  header("Location:admin.php?add=ok" ); // redirection si création réussie
 }
 else{
  header("Location:admin.php?erreur=pass" ); // redirection si le pass1 est différent du pass2
 }
}
 
Qqn a t-il une idée de comment faire pour que les données de la session ne soient pas modifiées lors de l'ajout d'un nouvel utilisateur ? merci
 

Reply

Marsh Posté le 23-07-2006 à 23:51:34   

Reply

Marsh Posté le 24-07-2006 à 03:34:44    

Tu aurais pas ton serveur avec php configuré sur register_global à on ?

Reply

Marsh Posté le 24-07-2006 à 07:43:28    

Désolé de critiquer un peu mais je trouve ce test pas terrible :

Code :
  1. if ($utilisateur) {
  2. //...
  3. }


 
Il est quand même plus judicieux de testé comme ceci :

Code :
  1. if ($utilisateur == 1) {
  2. //...
  3. }


 
Ton test vérifiait un booléen, ici à TRUE. Or TRUE vaut une valeur positive non null donc n'importe quelles valeurs. Je ne dis pas que c'est pas bien, juste un peu maladroit. Désolé de ne pas avoir répondu à ta question.


Message édité par AlphaZone le 24-07-2006 à 07:43:47
Reply

Sujets relatifs:

Leave a Replay

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