Sessions - PHP - Programmation
Marsh Posté le 24-07-2006 à 03:34:44
Tu aurais pas ton serveur avec php configuré sur register_global à on ?
Marsh Posté le 24-07-2006 à 07:43:28
Désolé de critiquer un peu mais je trouve ce test pas terrible :
Code :
|
Il est quand même plus judicieux de testé comme ceci :
Code :
|
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.
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