Avatar billede fagghunter Nybegynder
06. juni 2005 - 16:16 Der er 6 kommentarer

User Levels

Ey :)

Jeg er igang med at kode en brugerafdeling hvor admins kan redigere brugere osv. og vælge hvad en bruger har adgang til. Jeg har sat det op på denne her måde:

User - redigere sin profil
Moderator - user + nyheder, forum, tagwall, links
Admin - Alle funktioner

Lad os sige at en alm. user ikke skal være moderator, men jeg vil gerne give ham adgang til at skrive nyheder. Så hans adgang kommer til at se sådan her ud:

User - redigere sin profil + nyheder

Mit egentlige problem er at hvordan kan jeg inddele min mysql database på? Hvis jeg både har adgang til nyheder og links, så vil  min "level" row i databasen være:

newsadmin linksadmin

I news.php checker den jo om jeg har adgang:

if ($level == "newsadmin")

Nu da jeg har både newsadmin og linksadmin så er det ikke = newsadmin..

Jeg håber der er nogen som kan hjælp med! Jeg har tænkt meget over det, men jeg har ikke fundet en løsning endnu :(

Jeg takker på forhånd!

/fagghunter aka SiZanX
Avatar billede jakobdo Ekspert
06. juni 2005 - 16:20 #1
Du kan jo evt lave det med numre!
Så:
user = 1
mod = 2
nyheder = 4
forum = 8
tagwall = 16
links = 32
admin = 64

Så en bruger med adgang = 9 (user + forum)

Du kunne også lave en ny tabel til det.
og så have det som true/false rækker for hver bruger!
Avatar billede fagghunter Nybegynder
06. juni 2005 - 16:34 #2
Det med tal er lidt for kompliceret :D For hvis jeg kommer med et nyt script, så skal jeg til at ændre talrækken osv. Hvad med mener du med en ny tabel? altså hvordan har du tænkt dig at sætte det op på?
Avatar billede galaxy Nybegynder
06. juni 2005 - 16:51 #3
Jeg gør det på følgende måde:

Hver bruger har "rights" af X antal karakterer, alt efter hvor mange afdelinger på siden der skal tildeles rights til. Lad os sige, at du har disse 3: Nyheder, Links og Forum. Hver afdeling kan have et "rights-level" mellem 1 og 9. F.eks. 1 for læse, 2 for oprette, 3 for redigere og 4 for slette.

321 i rights-feltet vil så give en bruger ret til, at redigere (og oprette og læse) nyheder, at oprette (og læse) links, samt at læse forum.

I starten af f.eks. news.php laver du så en $news_rights = substr($VariabelMedAlleRights, 0, 1); for at hente den første char ud som jo indeholder rettigheder til news.

If ($news_rights<=1)
  må der læses

If ($news_rights<=2)
  må der læses og oprettes

If ($news_rights<=3)
  må der læses, oprettes og redigeres

If ($news_rights<=4)
  må der læses, oprettes, redigeres og slettes
Avatar billede kargo1 Nybegynder
06. juni 2005 - 21:34 #4
jacobdos forslag med en true/false række for hver bruger fungerer fint.

Eksempel 1:
user_id    right_id      is_allowed
-------    --------      ----------
user1      user          1
user1      admin        1
user1      moderator    1
user2      user          1
user2      admin        0
user2      moderator    0

Alternativt kan tabellen bare indeholde user_id og right_id, hvor brugeren har den pågældende rettighed.
Eksempel 2:
user_id    right_id
-------    --------
user1      user
user1      admin
user1      moderator
user2      user

Inden du udskriver en side, kontrollerer du så, om den pågældende kombination af user_id og right_id findes i databasen. Det giver stor fleksibilitet. For hver enkelt side kan du bestemme en eller flere right_id's, som skal give adgang.
Avatar billede zib Nybegynder
07. juni 2005 - 15:23 #5
du kunne også gøre sådan her

i den table indsætter du dette

  `level` enum('normal','newsadmin','admin') NOT NULL default '1',

    <?
    $query = mysql_query("SELECT * FROM brugere where user='$_SESSION[username]'");
    $admin = mysql_fetch_array($query);
    if($admin["level"]== "newsadmin"){
    ?>

din kode

    <?
    }
    ?>
Avatar billede fagghunter Nybegynder
08. juni 2005 - 10:40 #6
jeg kigger på det når jeg kommer hjem, jeg skal lige op til årsprøve i kemi. De er allesammen interresante :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester