2009-12-23 5 views
1

Je souhaite accorder à certaines utilisateurs certaines autorisations. Serait-ce le meilleur moyen? Je ne veux pas faire de groupes comme: admin, moderator, normal et ainsi de suite. Je veux être en mesure de donner à un utilisateur l'accès aux nouvelles et à un autre créer un sondage, et peut-être un autre sondage de suppression.utilisateurs et autorisations

Je pense tables comme ceci:

CREATE TABLE `users` (
`id` mediumint(8) unsigned NOT NULL, 
`username` varchar(255) NOT NULL, 
`password` varchar(255) NOT NULL, 
) 

CREATE TABLE `user_permissions` (
`id` mediumint(8) unsigned NOT NULL, 
`user_id` mediumint(8) unsigned NOT NULL DEFAULT '0', 
`can_post_news` tinyint(1) NOT NULL DEFAULT '0', 
`can_delete_topics` tinyint(1) NOT NULL DEFAULT '0' 
........ 
) 

Et Sur chaque page je dois vérifier:

$sql = mysql_query("SELECT * FROM user_permissions WHERE user_id = $loggedinuser"); 
$row = mysql_fetch_assoc($sql); 

if ($row['can_delete_topics'] == 1) { 
mysql_query("delete from topics...."); 
} 

Une autre question: Puis-je faire une fonction du 'code de vérification' afin Je n'ai pas besoin de ce code moche sur chaque page? (Je ne suis pas si bon avec des fonctions encore)

Excusez mon anglais, je fais de mon mieux

Merci

+0

Pourquoi voudriez-vous pas créer des groupes pour attribuer ces rôles? Une fois l'installation terminée, tout ce que vous avez à faire est d'ajouter ou de supprimer des ID utilisateur du rôle. –

Répondre

5

une meilleure façon pourrait être (en utilisant la syntaxe postgresql sql):

CREATE TABLE users (
    id  SERIAL, -- autoincrementing int 
    ... 
) 

CREATE TABLE permissions (
    id  SERIAL, 
    name VARCHAR(255) NOT NULL, 
    ... 
) 

create table users_permissions (
    id_user REFERENCES users(id), 
    id_permission REFERENCES permission(id), 
    UNIQUE(id_user, id_permission) 
) 

puis recherchez une ligne dans le tableau users_permissions. Pour votre deuxième question, l'histoire est plus longue. pour le code ci-dessus, il n'y a aucun moyen, vous devez vérifier que l'utilisateur a le droit d'exécuter une fonction particulière. pour ce que je peux me rappeler php (n'est-ce pas php, non?) a poire qui est une bibliothèque de code utile. il y avait aussi un grand dépôt de classes mais je ne me souviens pas de son nom.

Edit:

j'ai trouvé le site: http://www.phpclasses.org/ comment difficile de se rappeler ...

+1

+1 et cette autorisation peut être lue au début de la session de l'utilisateur dans une variable de classe, puis vous vérifiez simplement l'autorisation requise en vérifiant la propriété de classe. Au moins de cette façon plus rapide que l'exécution de sélectionner à chaque fois. – ThinkJet

Questions connexes