Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2006, 14h23   #1
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Par défaut [Sécurité] Problème avec les droits dans la partie administration

Salut à tous, voila petit problème que j'ai rencontré et ou je ne trouve pour l'instant pas de solution.

Sur mon site, j'ai créais une partie administration afin de mettre les news à jour, j'ai plusieurs gars qui m'aide à créer les news donc je ne suis pas le seul à mettre le site à jour.

Pour ne pas me compliquer la vie, j'ai créé dans ma base de donnée un système de droits, j'explique :

J'ai une table "Utilisateurs" pour rentrer toutes les infos des utilisateurs.
Une table "Utilisateur Droit" avec 2 clés primaires pour pouvoir faire les jointures
Puis une table "Droit" ou sont fixé les droits : Administrateur, Newser...

Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?php 
include ("../requete_droit.php"); //Requete avec jointures
while ($donnees_info= mysql_fetch_array($sql))
{
     if (($donnees_info['droit'] == 'Administrateur') || ($donnees_info['droit'] == 'AMV' 'Newser') || ($donnees_info['droit'] == 'Newser'))
     {
          echo "on affiche le contenu"; 
     }
}
?>
Voila, mon problème est que si une personne possède 2 droits dans mon cas Newser et Amv, le contenu de la page s'affichera 2 fois.

Quelqu'un aurait une solution pour qu'il ne s'affiche qu'une fois, je sais que mon problème vient du if.

Merci à tous
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 14h42   #2
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Pourquoi il y a un while à cette endroit ? si tu veux qu'il retourne qu'un élément tu vois du coté de ta requête et voit là ou tu peux placer un "DISTINCT" mais je pense que c'est un problème de conception.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 14h55   #3
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Ben voila le code avec la requête dîte moi si c'est réellement un problème de conception car je n'ai de problème que lorsque l'utilisateur possède 2 droits.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
$session = $_SESSION['pseudo'];
include ("connection.php");
 
$requette= "SELECT droits.droit FROM narutorengan_utilisateur_droit AS util_droit INNER JOIN narutorengan_utilisateurs AS util ON util_droit.utilisateur_id = util.id INNER JOIN narutorengan_droits AS droits ON util_droit.droit_id = droits.id WHERE util.pseudo = '".$session."'";
 
$sql= mysql_query($requette);
 
while ($donnees_info= mysql_fetch_array($sql))
{
	if (($donnees_info['droit'] == 'Administrateur') || ($donnees_info['droit'] == 'AMV' 'Newser') || ($donnees_info['droit'] == 'Newser'))
	{
                  echo "on affiche le contenu"; 
             }
}
?>
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 14h58   #4
Membre éclairé
 
Avatar de johweb
 
Inscription : décembre 2003
Messages : 332
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : décembre 2003
Messages : 332
Points : 316
Points : 316
C'est pas très propre, mais si un utilisateur peut avoir plusieurs droits, modifie ton script comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$test='';
while ($donnees_info= mysql_fetch_array($sql))
{
	if (($donnees_info['droit'] == 'Administrateur') || ($donnees_info['droit'] == 'AMV' 'Newser') || ($donnees_info['droit'] == 'Newser'))
	{
                  $test='ok'; 
             }
}
if($test=='ok'){
//alors on affiche le contenu
}
johweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 15h03   #5
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Merci johweb pour ta réponse, je vais tester ça desuite.
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 15h10   #6
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Il me met une erreur pour cette ligne :

Code :
1
2
3
4
 
<?php
if (($donnees_info['droit'] == 'Administrateur') || ($donnees_info['droit'] == 'AMV' 'Newser') || ($donnees_info['droit'] == 'Newser'))
?>
Voici l'erreur : Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

Je pense que ca vient de l'espace entre 'AMV' et 'Newser'

Une idée?
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 16h01   #7
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par furth
Il me met une erreur pour cette ligne :

Code :
1
2
3
4
 
<?php
if (($donnees_info['droit'] == 'Administrateur') || ($donnees_info['droit'] == 'AMV' 'Newser') || ($donnees_info['droit'] == 'Newser'))
?>
Voici l'erreur : Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

Je pense que ca vient de l'espace entre 'AMV' et 'Newser'

Une idée?
A cause de ceci == 'AMV' 'Newser')

que voulais-tu faire à cette endroit ? si c'est concaténer avec espace :
'AMV Newser'
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 16h06   #8
Futur Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : mai 2006
Messages : 62
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : mai 2006
Messages : 62
Points : 19
Points : 19
Apparament la solution c'était bien ca : 'AMV Newser'

Merci à toi
furth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2006, 17h15   #9
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par furth
Apparament la solution c'était bien ca : 'AMV Newser'

Merci à toi
Juste dans le cas ou tu ne serais pas :

ça aurait été deux variables que tu aurais voulu concatener avec un espace :

Code :
$variabel1.' '.$varaible2;
Methode pro
Code :
$variabel1.chr(1).$varaible2;
je sais plus si c'est 0 ou 1.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h36.


 
 
 
 
Partenaires

Hébergement Web