Avatar billede svinget Praktikant
25. august 2017 - 13:40 Der er 9 kommentarer

PHP login script with hierarchy

Hi

Anyone have a "simple" php login script, where you can assign different level of access.

If i e.g. have 5 users, with different status:
User 1: Access 1
User 2: Access 2
User 3: Access 3
User 4: Access 4
User 5: Access 5

Page 1: Access 1
Page 2: Access 3
Page 2: Access 5

User 1 and 2 can only access page 1, but user 3,4 and 5 can access both page 1 and page 2. Only user 5 can access page 3

Best Regads

Kim
Avatar billede tvilling53 Seniormester
25. august 2017 - 16:51 #1
Hej prøv at se:
Styre adgang til php sider med Login script fra 21 maj 2015.
Thomas V
Avatar billede olsensweb.dk Ekspert
25. august 2017 - 17:14 #2
give each user one or more role(s), put user info in $_SESSION['USER'], when login and test $_SESSION['USER']->role_id / $_SESSION['USER']['ROLES'] on each restricted site.

if users can have only one role (simpel)
tbl_users
id, firstname, lastname, username, password, role_id

tbl_roles
id, name



if users can have several roles (most flexible)
tbl_users
id, firstname, lastname, username, password

tbl_roles
id, name

tbl_map_user_role
id, user_id, role_id


i can see you er started on it, in your last question
https://www.computerworld.dk/eksperten/spm/1003862
long time ago, as tvilling53 write in #1



test on each restricted site

(untested)
Example #1 in_array() example
$status = in_array( $_SESSION['USER']->role_id , array(1,4,6)  )
if(!$status){
    echo "not i array";
}
else{
    echo "in array";
}



(untested)
test on one page
eks Example #3 in_array() with an array as needle
$status = in_array( $_SESSION['USER']['ROLES'] , array(1,4,6)  )
if(!$status){
    echo "not i array";
}
else{
    echo "in array";
}


ref http://php.net/manual/en/function.in-array.php
Avatar billede svinget Praktikant
29. august 2017 - 10:44 #3
Hej igen Thomas

Trods utallige forsøg, kom det aldrig til at virke, så jeg tænkte om der fandtes en andet script, der var bedre egnet.

Mvh. Kim
Avatar billede olsensweb.dk Ekspert
29. august 2017 - 12:44 #4
jeg tror ikke du finder noget færdigt script, der passer 100%, det er en af ulemperne ved at lave sit eget system selv, men også en fordel ved at det er så flexibelt, det kræver bare mere af udvikleren.
af sammen årsag er der mange der anvender et færdigt CMS system, der er begrænsninger, men også en masse færdig moduler.
sådan noget som rettigheds styring, det er allerede i de fleste CMS'er

så hvis du ikke er code "nørd", vil jeg anbefale dig at kigge på et færdigt CMS
feks
https://da.wordpress.org/


kig også på diss link
https://trends.builtwith.com/cms
https://www.computerpeople.dk/hvilken-hjemmesideloesning-cms-skal-du-vaelge/
https://en.wikipedia.org/wiki/List_of_content_management_systems#PHP
Avatar billede svinget Praktikant
29. august 2017 - 12:55 #5
Hej
Et udemærket forslag, men er ikke tilhænger at at betale et abbonement i årevis, men det kan jeg selvfølgelig blive nød til.

Mvh. Kim
Avatar billede showsource Seniormester
05. september 2017 - 19:39 #7
Hmm, jeg lavede noget engang, hvor der ved request blev tjekket i en tabel for at se om man havde rettigheder til siden.
Virkede mest logisk for mig dengang.
At gemme rettigheder i en session er jeg ikke så meget til. Hellere lave et simpelt kald til db i stedet for.
Avatar billede olsensweb.dk Ekspert
06. september 2017 - 06:59 #8
#7
[quote]
hvor der ved request blev tjekket i en tabel for at se om man havde rettigheder til siden.
[/quote]
også en mulighed, styrede du det så via user_id i tabellen eller tildelte du brugerne en / flere rolle(r) du testede på i tabellen ??
du får selvføgelig lidt flere database opslag men det er en priotering

grundet til jeg bruger roller er nogle menuer kun skal være tilgængelige for bestemte roller eks en admin menu, jeg har så valgt at have rollen liggende i session for at spare et db opslag pr side, da menuen er gennemgående på alle sider, i min tanke
Avatar billede showsource Seniormester
06. september 2017 - 07:31 #9
Jeg havde en logintabel, id, navn og password
En "tmp_tabelnavn" med id og navn. Her blev de forskellige tabelnavne gemt.
En "tmp_moderator" med admin_id og tabel_id

Grunden til jeg gjorde det på den måde, var fordi jeg nemt kunne tildele rettigheder som fik virkning med det samme.
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

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