je vous contact car je rencontre un problème de session plus précisément de récupération ID, j'ai une page nommée session.php et une autre page nommée profil le problème est est le suivant je me retrouve avec le même ID pour 2 utilisateur Différent en sachant qu'il y a un utilisateur admin avec certain droit et d'autre utilisateur avec des droits utilisateur.
Cela récupère bien ID dans la base de donnée sauf que quand je regarde ID de l'utilisateur admin qui est égale a 1 l'utilisateur (user) la aussi .
C'est la page session qui envoie l'ID utilisateur (admin ou user) vers la page profil.php.
ou est le problème ?
Voici la page session.php
<?php
require_once 'includes/connect.php';
echo '<br>';
echo '<div id="session_bloc">';
echo '<div id="session_text">';
if ($_SESSION['privilege'] == "admin") {
//création de la requête SQL:
$sql = "SELECT id_user, login, pass, nom, prenom, privilege FROM membres order by id_user ASC";
mysql_query("SET NAMES utf8");
//exécution de notre requête SQL:
$requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
$date = date("d-m-Y");
$heure = date("H:i");
echo '<span class="session_texte2">Vous êtes Connecté: </span> <span class="session_pseudo">'.$_SESSION['login'];'</span>';
echo '<br/>';
if( $result = mysql_fetch_object( $requete ) ) {
echo '<span class="session_texte2_liens"><a href="profil.php?administrateur='.htmlspecialchars($result->id_user).'">Mon Profil utilisateur</a></span><br>';
}
echo '<span class="session_texte2_liens"><a href="panel/espace.php">Panneaux d\'administration</a></span><br>';
echo '<span class="session_texte2_liens"><a href="index.php?erreur=logout">Déconnection</a></span><br>';
} // laisser cel-ci
if ($_SESSION['privilege'] == "user") {
//création de la requête SQL:
$sql = "SELECT id_user, login, pass, nom, prenom, privilege FROM membres order by id_user ASC";
mysql_query("SET NAMES utf8");
//exécution de notre requête SQL:
$requete = mysql_query( $sql, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
$date = date("d-m-Y");
$heure = date("H:i");
echo '<span class="session_texte2">Vous êtes Connecté: </span> <span class="session_pseudo">'.$_SESSION['login'];'</span>';
echo '<br/>';
if( $result = mysql_fetch_object( $requete ) ) {
echo '<span class="session_texte2_liens"><a href="profil.php?utilisateur='.htmlspecialchars($result->id_user).'">Mon Profil utilisateur</a></span><br>';
}
echo '<span class="session_texte2_liens"><a href="index.php?erreur=logout">Déconnection</a></span>';
} // laisser cel-ci
echo '</div>';
echo '</div>';
echo '<br/>';
?>
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 20244 705 20 juin 2015 à 13:14
Bonjour,
Bon... déjà .. il y a des petites choses à corriger avant de se pencher réellement sur ton souci.
Pour commencer ... ne mets pas les instructions de connexion à ta BDD un peu partout dans ton code !
Tu créés UN FICHIER contenant
<?php
$serveur = 'localhost';
$user = 'user';
$pwd = 'h';
$database = 'database';
//connection au serveur:
$cnx = mysql_connect($serveur, $user , $pwd ) or die("Impossible de se connecter : " . mysql_error()); ;
//sélection de la base de données:
$db = mysql_select_db($database) ;
if (!$db_selected) {
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
?>
puis.. dans tes pages (au début des pages) .. tu en faire un REQUIRE_ONCE
Ensuite ... dans ta page SESSION.PHP
Tu as :
if ($_SESSION['privilege'] == "admin") {
//création de la requête SQL:
$sql = "SELECT id_user, login, pass, nom, prenom, privilege FROM membres order by id_user ASC";
Et
if ($_SESSION['privilege'] == "user") {
//création de la requête SQL:
$sql = "SELECT id_user, login, pass, nom, prenom, privilege FROM membres order by id_user ASC";
... tu peux m'expliquer la différence .. ou me dire pourquoi tu y a deux fois la même chose ?
N'aurais tu pas oublié d'y mettre un WHERE dans tes requêtes ? (d'où le fait que tu aies la même chose quelque soit le profil du user... )
Pour ta première réponse ok je vais faire ça de suite pour la question de différence entre la requête admin et user, j'avoue que c'est la même je les est placer 2 fois dans le code pour voir si cela venais de là le problème, s'il faillais 2 requête séparer une pour l'administrateur et l'autre pour l'utilisateur mais ça n'a rien changer.
ensuite dans profil.php voilà ce que j'ai fais de la requête :
$sql = "SELECT id_user, login, pass, nom, prenom, privilege FROM membres WHERE id_user=".$id;
et du cotée session.php comme ça :
//création de la requête SQL:
$sql = "SELECT id_user, login, pass, nom, prenom, privilege FROM membres order by id_user ASC";
Ensuite, c'est session.php qui envoie id vers profils.php et non l'inverse.
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 20244 705
>
damein
20 juin 2015 à 13:41
Ca n'empêche pas...que d'avoir les deux mêmes requêtes ... n'a aucun intérêt ...
Et puis ... à quel moment places tu dans ton URL des variables get administrateur et/ou utilisateur ?
A quel moment également initialises tu ta variable $_SESSION['privilege'] ?
Cotée session :
if ($_SESSION['privilege'] == "administrateur") {
// Ont affiche tel ou tel information sur l'utilisateur si il à le statu admin
}
if ($_SESSION['privilege'] == "user") {
// dans le cas contraire on affiche autre chose si le statu est user
}
coter page session.php qui envoie l'ID vers profil.php
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 20244 705
>
damein
20 juin 2015 à 14:09
Tu ne m'as pas compris ;..
A quelle moment ... tu remplis ta variable de session
$_SESSION['privilege']
avec ... ou "user" .. ou "administrateur" ??
damein
>
jordane45
Messages postés38314Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention24 novembre 2024 Modifié par damein le 20/06/2015 à 14:23
il y a un formulaire dans la page index avec le système d'identification c'est a partir de la que c'est géré, les utilisateurs (user) et privilège sont des nom de champs dans la table membre ce que contient ces champs sont le mots user et le mots admin c'est grâce a ces mots pris en base que cela débloque les droits après l'identification
session_start(); // On relaye la session
if (isset($_SESSION['authentification'])){
// vérification sur la session authentification (la session est elle enregistrée ?)
// ici les éventuelles actions en cas de réussite de la connexion
}
Coter page index:
session_start(); // début de session
if (isset($_POST['login'])){ // execution apres envoi du formulaire
$login = mysql_real_escape_string($_POST['login']); // mise en variable du nom d'utilisateur
$pass = sha1($_POST['pass']); // mise en variable du mot de passe crypté
// 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 $tablename_dbprotect WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
$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['authentification'] = 1; // enregistrement de la session
// déclaration des variables de session
$_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
$_SESSION['nom'] = $row_verif['nom']; // Son nom
$_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
$_SESSION['login'] = $row_verif['login']; // Son Login
$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
Modifié par damein le 20/06/2015 à 13:32
ensuite dans profil.php voilà ce que j'ai fais de la requête :
et du cotée session.php comme ça :
Ensuite, c'est session.php qui envoie id vers profils.php et non l'inverse.
20 juin 2015 à 13:41
Et puis ... à quel moment places tu dans ton URL des variables get administrateur et/ou utilisateur ?
A quel moment également initialises tu ta variable $_SESSION['privilege'] ?
Modifié par damein le 20/06/2015 à 14:06
coter page session.php qui envoie l'ID vers profil.php
coter profil.php
20 juin 2015 à 14:09
A quelle moment ... tu remplis ta variable de session
avec ... ou "user" .. ou "administrateur" ??
Modifié par damein le 20/06/2015 à 14:23
Coter page index:
coter formulaire: