Avatar billede michaeltryl Seniormester
09. oktober 2006 - 23:39 Der er 20 kommentarer og
1 løsning

ideer til login admin system

jeg skal til at lave enadmin del til en hjemmeside.
der skal være X antal admins, men alle admins skal ikke have samme rettigheder.

f.eks:
en skal kunne rette alt (webmaster)
en skal kun må tilføje referater og slette forum indlæg (ref)
en anden skal kun må slette forum indlæg (forum)

min plan er i bruger databsen og lave et felt (admin) hvor der skal stå titlerne på de forskellige admins (webmaster, ref og forum)

men er det nok bare at have nogen if sætninger
f.eks if (admin= webmaster) skal der stå dette på siden og if admin = ref skal der noget andet.
eller er der en bedre måde at gøre dette på?

håber i forstår
Avatar billede troelss Nybegynder
09. oktober 2006 - 23:51 #1
Hmm... Kunne du ikke "levels"?
gæster er level 1
medlemmer level 2
admin 1 level 3
admin 2 level 4
webmaster level 5

og hver sider har så en if-sætning (el.lign.):
if ($level > 3) {
echo "ingen adgang";
exit;
}
Avatar billede troelss Nybegynder
09. oktober 2006 - 23:55 #2
Det var vidst noget sludder....
Se venligst bort fra slåfejl, og det skulle være
$level < 3
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 00:04 #3
det virker til at være en bedre ide end min
skal lige være helt sikker på hvad du mener
jeg laver f.eks en side der ser sådan her ud,

if ($level > 3) {
echo "ingen adgang";
exit;
}

if ($level = 2) {
echo "rette forum indlæg";
exit;
}

if ($level = 5) {
echo "Du må alt";
exit;
}

og istedet for echo smider jeg alt min anden kode ind imellem { og }
Avatar billede AnyFellow Mester
10. oktober 2006 - 11:35 #4
Du låser dig meget med ovenstående, idet det vil være bøvlet at implementere en anderledes sikkerhed.

Du kunne også tage springet og lave dit login-system til mange flere typer brugere med det samme.

Du har sikkert allerede en tabel med brugere.

Du laver 2 nye tabeller:
- en tabel med 2 felter, der angiver gruppeid og gruppenavn
- en tabel til sammenkobling af rettigheder.

Den sidste tabel indeholder grupperid og brugerid.

Så kan du oprette nogle grupper f.eks.:
Users - view
Users - edit

På siden checker du så om brugeren er med i gruppen, i stedet for at du kigger på niveau.

Fordelen er at det er meget skalerbart.
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 11:44 #5
til kfisker.
jeg har ingen tabeller endnu er kun i ide fasen og vil vente med at begynde at kode til ideen er på plads.
Jeg synes dit forslag er det samme som det troelss kom med bare lavet på en anden måde, men det er måske mig der forstår det forkert.
så vidt jeg læser det skal jeg vel stadig væk have en række if sætninger på siden for at fortælle hvordan de forskellige grupper skal se siden eller forstår jeg det forkert?
Avatar billede AnyFellow Mester
10. oktober 2006 - 11:51 #6
Det er korrekt med if-sætningerne.

Ved at du checker på grupper, kan du altid tilføje flere grupper.
Det er mere bøvlet at lave admin-niveauer, fordi det bliver sværere og sværere at huske hvilket niveau der må hvad, efterhånden som et site bliver større.

Hvis grupperne får meget sigende navne, er der ikke så meget at holde styr på.
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 11:54 #7
okay så det er faktisk det samme bare med gruppe navne istedet for tal
så i bruger tabellen angiver jeg en kollonne til gruppe hvori jeg skriver hvilken gruppe brugeren er medlem af så er det ikke nødvendigt med en ekstra tabel hvor jeg skriver gruppe navnene
Avatar billede AnyFellow Mester
10. oktober 2006 - 11:54 #8
Jeg har f.eks. en hjemmeside hvor der er oplysninger om de forskellige medlemmer.

Er man ikke logget på vises nogle af oplysningerne.

Min brugeradministration på en fodboldside jeg har lavet er så baseret på følgende grupper:
Users - view telephone
Users - view e-mail
Users - edit telephone
Users - edit e-mail
Users - delete
Users - create

Under min administration af fodboldkampe er der ligeledes grupper:
Games - create
Games - edit

osv.
Avatar billede AnyFellow Mester
10. oktober 2006 - 11:55 #9
Det fede ved at have gruppenavnene, er at du ikke behøver huske hvad det nu var gruppen med nr. 47 gav lov til.

Her vil navnene kunne bruges direkte i din kodning, og dermed give overblik.
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 12:01 #10
okay der er en del if sætninger at holde styr på så, men kan godt se at det gør det nemmere med navne i stedet for tal.
jeg var egentlig selv inde på gruppenavne i mit spørgsmål, men det er altid godt at få lidt flere ideer på hvordan det gøres i prkasis
Avatar billede AnyFellow Mester
10. oktober 2006 - 12:08 #11
I stedet for at lave en forespørgsel til databasen hver gang, trækker jeg alle tilhørsforhold ud i en session-variabel, som jeg så kan lave checket op imod, uanset hvilken side brugeren er på.
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 12:12 #12
du skriver alle tilhørsforhold, jeg er med på
at du har brugerens gruppe til at ligge i en session-variabel, men hvilke flere udover brugernavn er smart at hive ud
Avatar billede AnyFellow Mester
10. oktober 2006 - 12:15 #13
Det kommer an på hvad du skal bruge det til.

Jeg trækker kun grupperne, brugerens navn og brugerens id ud som standard. Skal jeg bruge mere laver jeg en forespørgsel til databasen.
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 12:17 #14
okay. lige til sidst, mener du det er nødvendigt med en seperat tabel med grupperne i er det ikke nok at at have et felt i bruger tabellen til det.
smid lige et svar også så får du point og mange tak for hjælpen
Avatar billede AnyFellow Mester
10. oktober 2006 - 12:20 #15
Det vil ikke være hensigtsmæssigt at have et felt der skal indeholde flere gruppernavne/numre.

Du kan have din brugertabel:
id,navn
1,Keld
2,Benny
3,Egon

Og en tabel til grupperne:
id,navn
1,Users - edit
2,Users - delete
3,Users - view

Og en tredie tabel til at koble dem sammen:
userid,groupid
1,2
1,3
2,3
3,3

Her vil bruger 1 kunne view og edit
Bruger 2 og 3 vil kunne kunne view.
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 12:24 #16
kan du give et eksempel på en if sætning.
kan godt se det smarte i det, men det var ikke sådan jeg havde tænkt.
derfor vil jeg godt se hvordan du vil lave if sætningen som skal bruges når bruger 1 logger ind eller er det to if sætninger
Avatar billede AnyFellow Mester
10. oktober 2006 - 13:17 #17
Først laver du en forespørgsel der henter alle de grupper en bruger er medlem af, og kommer dem i en session-variabel ($_SESSION['groupsmembership'])

Hvis du forestiller dig at du har en side hvor alle brugere på dit system listes. Ved at klikke på brugernavnet kan du se alle oplysninger om brugeren.
Ved at klikke på "edit" ud for brugeren, kan du ændre i brugeroplysningerne.
Ved at klikke på "delete" kan du slette brugeren.

Du vil så have 3 if sætninger:

if (in_array("Users - edit", $_SESSION['groupsmembership']))
  {
    $edit = ("<a href=\"edit.php\">edit</a>"); 
  }

if (in_array("Users - delete", $_SESSION['groupsmembership']))
  {
    $delete = ("<a href=\"delete.php\">delete</a>"); 
  }

if (in_array("Users - view", $_SESSION['groupsmembership']))
  {
    $brugernavn = ("<a href=\"showuser.php\">$username</a>"); 
  }
else
  {
    $brugernavn = ("$username"); 
  }

$brugerlinie = ("
$brugernavn - $edit - $delete
")
Avatar billede michaeltryl Seniormester
10. oktober 2006 - 13:24 #18
okay mange tak for hjælpen
Avatar billede AnyFellow Mester
10. oktober 2006 - 13:25 #19
Det var så lidt :)

Tak for point.
Avatar billede troelss Nybegynder
10. oktober 2006 - 20:57 #20
Så lærte jeg også lidt idag :)
Når man får sat sig ind i systemet, så virker det meget mere overskueligt... også, som du siger, hvis siden skulle blive større.
Avatar billede michaeltryl Seniormester
02. november 2006 - 20:23 #21
jeg er nu kommet igang med dette system og vil høre om dette er den rigtige møde at gøre det på

if ($gruppe == 'admin')
{
echo"<a class='menu' href='$side/medlems-sider/bruger/brugerliste.php'>kun admin</a>";
}

if ($gruppe == 'admin' or $gruppe == 'test')
{
echo"<a class='menu' href='$side/medlems-sider/bruger/brugerliste.php'>ny link</a>";
}


eller om det er bedre at gøre sådan

if ($gruppe == 'admin')
{
echo"<a class='menu' href='$side/medlems-sider/bruger/brugerliste.php'>kun admin</a>";
echo"<a class='menu' href='$side/medlems-sider/bruger/brugerliste.php'>ny link</a>";
}

if ($gruppe == 'test')
{
echo"<a class='menu' href='$side/medlems-sider/bruger/brugerliste.php'>ny link</a>";
}
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



IT-JOB