[RESOLU] Plusieurs autorisations pour la même personne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Plusieurs autorisations pour la même personne

Re: [RESOLU] Plusieurs autorisations pour la même personne

par Ryle » 30 juin 2021, 16:29

Je passe un peu après la bataille, mais si effectivement il n'est pas judicieux d'ajouter des colonnes à chaque fois qu'une nouvelle page est ajoutée, je ne suis pas pour les colonnes qui contiennent plusieurs informations. Dans ce genre de projet, les pages sont souvent désignées par des identifiant plutôt que par des lettres et il devient compliqué de vérifier que la chaine contient la page "2", mais pas la 12 ou 20 qui contiennent aussi un 2. Il faut donc ajouter des séparateurs et ça devient vite une usine à gaz, même si mysql a des fonctions pour s'en sortir sans trop de difficulté.

Le problème est une simple association 1::N. Un utilisateur peut accéder à N pages et cela se matérialise très bien sous la forme d'une table de correspondance ID_USER / ID_PAGE. Au niveau administration, il suffit pour chaque page à laquelle l'utilisateur a accès, d'ajouter un enregistrement dans cette table avec l'id de la page autorisée. Ex : utilisateur 33 a accès aux page 2 et 8, on insère (33 ; 2) et (33 ; 8). (et si tu préfères des noms de pages au lieu des id, ça marche aussi :))

Et pour vérifier si l'utilisateur est autorisé à ouvrir une page, il suffit d'interroger cette même table : s'il existe un couple (33 ; 12), alors l'utilisateur 33 a accès à la page 12, si aucun résultat, il n'a pas les droits nécessaire. Pas besoin de changer la structure de la base de données lors de l'ajout d'une page, et pas besoin de s'arracher les cheveux pour savoir si on trouve la chaine "3" parce qu'il a bien droit à la page "3" et pas à la page "13" ;)

Re: [RESOLU] Plusieurs autorisations pour la même personne

par or 1 » 11 juin 2021, 14:02

si le nombre de pages est amené à augmenter dans le futur, c'est une mauvaise solution.
une solution est de mettre plusieurs valeurs dans la case, et de ne pas tester avec == mais strpos
la meilleure solution est probablement de créer une nouvelle table avec l'id de la personne et l'id de la page.

Re: Plusieurs autorisations pour la même personne

par xstevenetx » 11 juin 2021, 13:45

J'ai pris le problème à l'envers.
Au lieu de mettre plusieurs attribution dans une seule case, j'ai crée une colonne dans ma BDD pour chaque pages.
Problème résolu

Plusieurs autorisations pour la même personne

par xstevenetx » 11 juin 2021, 10:34

Bonjour,
Cela fais un moment que je bloque sur un problème.
J'aimerais faire des accès interdit sur différente page en fonction de la personne qui se connecte sur mon site.
Pour sa j'y arrive. Maintenant j'aimerais savoir si l'on peux mettre plusieurs habilitation sur une seule personne.
Dans ma base de donnée, j'ai le username, le mail, le password et autorisation.
Les autorisations serons multiple exemple être capable d'accéder à la page A et C mais pas la B.

Voici le bout de mon code pour la page A :

Code : Tout sélectionner

$username = $_SESSION['username']; $requete= 'SELECT * FROM users WHERE username = "'.$username.'"'; $recherche = connectPDO()->query($requete); while($resultat = $recherche->fetch()) $a=$resultat['autorisation']; { if($a == 'A') { ?> ////////HTML\\\\\\\\\ <?php } ELSE { header("Location: ERREUR.php"); }} ?>
Maintenant dans la BDD il faut que je lui indique dans la colonne 'autorisation' que la page A et la page C lui sont ouverte.
Si je met juste A, c'est OK pour la page A
Si je met juste C, c'est OK pour la page C
Mais si je met A et C, il ne me donne plus accès à rien.

Après d'autres personnes n'aurons accès que a la A, d'autre à la B uniquement etc....

Merci pour vos réponse.