Souci de get id session et affichage

Fermé
damein - 20 juin 2015 à 12:53
 damein - 20 juin 2015 à 14:20
Bonjour,

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/>';

?>




Voici la page profil.php
<?

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

}
else {
header("Location: index.php?erreur=intru"); // redirection en cas d'echec
exit;
}


echo '<!DOCTYPE html>';
echo '<html lang="en">';
echo '<head>';
echo '<title>Profil</title>';


echo '<meta charset="utf-8">';
echo '<meta name="viewport" content="width=device-width, initial-scale=1">';
echo '<script src="js/jquery.js"></script>';
echo '<script src="js/bootstrap.js"></script>';
echo '<link rel="stylesheet" href="css/style.css">';
echo '<link rel="stylesheet" href="css/profil.css">';
echo '<link rel="stylesheet" href="css/bootstrap.css">';
echo '<br/>';
echo '<br/>';
echo '<br/>';



if ($_SESSION['privilege'] == "admin") {

echo '<div id="profil_utilisateur">';

//connection au serveur:
$cnx = mysql_connect( "", "user", "h" ) ;
 
//sélection de la base de données:
$db = mysql_select_db( "database" ) ;
 
$id = $_GET["administrateur"] ;

//requête SQL:
$sql = "SELECT id_user,  login, pass, nom, prenom, privilege FROM membres WHERE id_user=".$id;

mysql_query("SET NAMES utf8"); 
 
//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;
 
//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{

echo '<input type="hidden" name="id" value="'.$result->id_user.'">';

echo '<br/>';
echo '<img src="image/profil-info.png" alt="image profil">';
echo '<br/>';
echo '<br/>';

echo '<div id="Profil_info_admin">';
echo '</div>';
echo '<br/>';

echo '<table>';
echo '<tr>';
echo '<td width="105" align="right">Votre Nom :</td>';
echo '<td width="150" align="center"><div id="profil_info2">'.$result->nom.'</div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Votre Prénom :</td>';
echo '<td align="center"><div id="profil_info2">'.$result->prenom.'</div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Type d\'accès :</td>';
echo '<td align="center"><div id="profil_info2">'.$result->privilege.'</div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right"> Adresse E-Mail :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right"> Adresse ICQ :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Adresse IRC :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Votre site Web :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '</tr>';
echo '</table>';
echo '<br/>';


echo '<img src="image/vos-competences.png" alt="image compétence">';
echo '<table>';
echo '<tr>';
echo '<td colspan="2">
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
</td>';
echo '</tr>';
echo '</table>';
echo '<br/>';


echo '<img src="image/vos-connaissances.png" alt="image connaissance">';
echo '<table>';
echo '<tr>';
echo '<td colspan="2">
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
</td>';
echo '</tr>';
echo '</tr>';
echo '</table>';
echo '<br/>';
echo '<a href="espace.php">Retour Sur L\'espace membre</a>';
echo '</div>';
echo '</head>';
echo '<body>';
echo '</body>';
echo '</html>';

  }
}




if ($_SESSION['privilege'] == "user") {


echo '<div id="profil_utilisateur">';

//connection au serveur:
$cnx = mysql_connect( "localhost", "user", "h" ) ;
 
//sélection de la base de données:
$db = mysql_select_db( "database" ) ;
 
$id2 = $_GET["utilisateur"] ;

//requête SQL:
$sql = "SELECT id_user,  login, pass, nom, prenom, privilege FROM membres WHERE id_user=".$id2;

mysql_query("SET NAMES utf8"); 
 
//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;


//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{

echo '<input type="hidden" name="id" value="'.$result->id_user.'">';

echo '<br/>';
echo '<img src="image/profil-info.png" alt="image profil">';
echo '<br/>';
echo '<br/>';


echo '<div id="Profil_info_user">';
echo '</div>';
echo '<br/>';

echo '<table>';
echo '<tr>';
echo '<td width="105" align="right">Votre Nom :</td>';
echo '<td width="150" align="center"><div id="profil_info2">'.$result->nom.'</div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Votre Prénom :</td>';
echo '<td align="center"><div id="profil_info2">'.$result->prenom.'</div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Type d\'accès :</td>';
echo '<td align="center"><div id="profil_info2">'.$result->privilege.'</div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right"> Adresse E-Mail :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right"> Adresse ICQ :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Adresse IRC :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td align="right">Votre site Web :</td>';
echo '<td align="center"><div id="profil_info2"> </div></td>';
echo '</tr>';

echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="2"> </td>';
echo '</tr>';
echo '</tr>';
echo '</table>';
echo '<br/>';


echo '<img src="image/vos-competences.png" alt="image compétence">';
echo '<table>';
echo '<tr>';
echo '<td colspan="2">
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
</td>';
echo '</tr>';
echo '</table>';
echo '<br/>';


echo '<img src="image/vos-connaissances.png" alt="image connaissance">';
echo '<table>';
echo '<tr>';
echo '<td colspan="2">
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
<br/> -
</td>';
echo '</tr>';
echo '</tr>';
echo '</table>';
echo '<br/>';
echo '<a href="espace.php">Retour Sur L\'espace membre</a>';
echo '</div>';
echo '</head>';
echo '<body>';
echo '</body>';
echo '</html>';

  }
}
?>

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
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... )
0
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.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > 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'] ?
0
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
echo '<span class="session_texte2_liens"><a href="profil.php?utilisateur='.htmlspecialchars($result->id_user).'">Mon Profil utilisateur</a></span><br>';


profil.php?utilisateur='.htmlspecialchars($result->id_user).'



coter profil.php
$id = $_GET["administrateur"] ;
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > 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" ??
0
damein > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 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)

coter formulaire:
echo '<body>';
echo '<div id="page-connection">';
echo '<br/>';
echo '<div id="logo-shadownet">';
echo '<img src="data:image/png;base64,'.base64_encode(file_get_contents($image1)).'" alt="titre identification">'; 
echo '</div>';
echo '<div id="connection">';
echo '<br/>';
echo '<br/>';
echo '<form action="" method="post" name="login_form">';
echo '<img src="data:image/png;base64,'.base64_encode(file_get_contents($image2)).'" alt="titre identification">'; 
echo '<input class="form-control" name="login" type="text" id="login">';
echo '<br/>';
echo '<img src="data:image/png;base64,'.base64_encode(file_get_contents($image3)).'" alt="titre identification">'; 
echo '<input class="form-control" name="pass" type="password" id="pass">';
echo '<br/>';
echo '<br/>';
echo '<button type="sumbit" class="btn btn-danger btn-block">Connection !! </button>';
echo '</form>';

if(isset($_GET['erreur']) && ($_GET['erreur'] == "login")) { // Affiche l'erreur
echo '<div id="session-down">Echec d\'authentification !!!  <br/>login ou mot de passe incorrect</div>'; 
}
if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur
 echo '<div id="session-down">Déconnexion réussie ! A bientôt '.$_SESSION['prenom'].'! </div>';
session_unset();
}
if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur 
echo '<div id="session-down">Aucune session n\'est ouverte ou vous n\'avez pas les droits pour afficher cette page.</div>';
}
0