Avatar billede tobrukDk Novice
11. november 2011 - 13:23 Der er 7 kommentarer og
1 løsning

Members / admin function

Hej

jeg gå i lige pt og er kommet inde et lille problem og det er at sådan at at Hvis man bare ligge inde uden password eller brugernavn eller noget som helst så kan man se admin's function , men hvis det er at man logger ind med admin kan man godt se det. men hvis jeg logger ind med en rank "2" f.eks eller "3" så kan man se anden function altså den som er for kun dem.

men hvis jeg ikke har opret en bruger ind i database  så kan f.eks kasper og kode; 1 log ind og samme tid tjek admin function på siden


<?php
            if($_SESSION['rank']==1){
                echo "<p>" .$brugernavn . " - Administrator konto" ."</p>" . "<br />";
                $admin="<a href='adminfunction.php'>Admin Function</a>";
                echo "<a href='brugerinfo.php'>Log ind ved kontrolpanel / RetBruger infomation</a>" . "<br />";
               
                echo $admin;
            }
            if($_SESSION['rank']==2){
                echo "<p>" . "Ret din profil / Ret infomation" . "</p>";
                $bruger = "<a href='profil.php'>Profil</a>";
                echo $bruger;
            }
        ?>


Hvad har jeg gøre galt siden det ikke gider at virker. :( altså jeg vil bare havde at hvis man bare logge ind uden password så kommer den frem og siger "Du er ikke log ind!" og hvis man bare skriver brugernavn og password kommer den frem og vise



if($_SESSION['rank']==2){
                echo "<p>" . "Ret din profil / Ret infomation" . "</p>";
                $bruger = "<a href='profil.php'>Profil</a>";
                echo $bruger;
            }


Håber dog at i kan hjælp mig med mit problem omkring det brugersystem som jeg har lavet ! :D Hååber i få en god weekend :D
Avatar billede micma18_ Nybegynder
11. november 2011 - 13:33 #1
Hvordan planter du dine session cookies?

Du skal jo lave et tjek på brugeren, inden du eks. planter seesion['rank'].

Men ellers, så lav en variabel som kører i dit php, som angiver brugerrettighederne, for det er lidt et sikkerhedshul i mine øjne. At overlade et spørgsmål om rettigheder til de cookies der findes i klientes browser.
Det er fint nok at difinerer et login med en session cookie, så den "logger ind", hver gang php køres, men gem ikke så vitale sikkerhedsmæssige on/off switches i cookies.



Personligt plejer jeg at lave et felt under brugeren, som definerer om han er admin eller ej. (m.fl. brugerrettigheder)

For han kan vel både være bruger OG admin på en gang.
Avatar billede tobrukDk Novice
11. november 2011 - 16:11 #2
Min lærer sagde noget om til sidste at det var at jeg kun lave seesion på en eller anden måde :) ved ikke hvordan man det kan kun man bare.
Avatar billede micma18_ Nybegynder
11. november 2011 - 23:20 #3
Sådan den grundlæggende måde jeg ville foreslå.

Antager at du har en database tabel med dine brugere. eks. med felterne id|brugernavn|md5 af password|admin-switch osv. osv.

Når du sender dine login felter til din php (helst med ssl self.) Så kontrollerer du dem op imod bruger databasen.
Hvis login godkendes, så indsætter du i en "session tabel" eks. med felterne id|brugerid|md5 af password|rand-session|timeoutepoch
Hvor du gemmer brugerens id, samt et random session id som du selv kan flette sammen på en eller anden måde... Det er vigtigst at det er rimeligt unikt, og ikke sådan lige at gætte sig til. Og så lave en timeoutepoch med time()+3600, for at angive sessionen til at leve i en time eks.

Så planter du ellers en session[brugerid] samt en session[rand-session]


I php scriptets login del, der tester du så om session[id] og session[rand-session] er sat, inden du behandler eventuelle $_POST[brugernavn] og $_POST[password].

så forestil dig noget i stil med:

//For en sikkerheds skyld og hvis der er risiko for at register_globals kan slås til (server / host skift osv.), så nulstil arrayet med bruger data ;-) eks. $brugerdata = null;

//start med at slette alle sessions i session tabellen der har en timeoutepoch værdi der er < time()-3600

if ($_SESSION[id] != null && $_SESSION[rand-session] != null){
//tester om sessionen findes i session tabellen {
  //login i forhold til bruger tabellen {
  //plant session cookies mv. og opdater timeoutepoch i session databasen med en frisk time()+3600, og hent bruger data ind.
  }
  else {
  //fejlbesked login fejl
  }
}
else {
  //fejl besked session udløbet
}
}
else if ($_POST[brugernavn] != null && $_POST[password] != null){
//login i forhold til bruger tabellen {
  //plant session cookies mv. indsæt en session i session databasen, og hent bruger data ind.
}
else {
  //fejlbesked login fejl
}
}



Længere nede i din kode, hvor du har dine forskellige admin ting. Der laver du eks. bare en IF sætning der der tester op imod bruger dataene, om admin switchen er sat eller ej.
Avatar billede tobrukDk Novice
11. november 2011 - 23:45 #4
Ja okay. Jeg kigger på det og finde om det virker
Avatar billede tobrukDk Novice
12. november 2011 - 12:19 #5
Det virker og takker for hjælpen!.
Avatar billede tobrukDk Novice
12. november 2011 - 12:20 #6
jeg lave om på det så det virker nu ;:D
Avatar billede vivian22 Nybegynder
22. juli 2012 - 01:41 #7
Hello,
how are you doing? please i want to be your friend.here is my e-mail vivianawori@yahoo.com
i will send you photo in my next mail OK
and i have something improtant to tell you
vivianawori@yahoo.com
from vivian
please reply
Avatar billede vivian22 Nybegynder
22. juli 2012 - 01:43 #8
Hej,
hvordan laver du? så jeg ville gerne være din friend.here er min e-mail vivianawori@yahoo.com
Jeg vil sende dig billeder i min næste post OK
og jeg har noget improtant at fortælle dig
vivianawori@yahoo.com
fra Vivian
bedes du besvare
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