webForumDet fria alternativet

Struktureringsproblem

5 svar · 293 visningar · startad av pettsson

pettssonMedlem sedan jan. 2002777 inlägg
#1

Behöver lite åsikter om det "korrekta" sättet att gå till väga. Flertalet sidor ska kräva olika privilegier för att kommas åt. Ska man lägga en variabel i början på varje sådan sida, eller ska man ha en include-fil som definerar en matris med filnamn->privilegiekrav? Eller kanske någon annan metod?

WiZzLeRMedlem sedan juni 2002369 inlägg
#2

finns egentligen inget rätt sätt.. så länge det fungerar så =) Jag brukar ha alla mina privilegier i databasen. T.ex du måste ha minst en 2:a som användare för att kunna editera nyheten. Då jämnför jag user raden med kanske en admin kolumn och nyhetsraden med level kolumn i tabellerna.

lillebrorMedlem sedan apr. 20041 687 inlägg
#3

Hej Pettsson!

Mitt system som jag använder för validering är uppbyggt på följande sätt.

Alla sidor som skall kunna visas i min domän måste finnas med i tblSiteNavigation. Annars kommer det upp ett felmeddelande alternativt att användaren inte är inloggad. I denna tabell lagrar jag:

* navigationID
* path
* filename
* pagename
* menu_order
* visible
* membershiplevelID

Samtliga fält är rätt självklara. MembershiplevelID anger för varje lagrad sida vilken lägsta medlemsnivå som behövs för att visas. Jag har nivåer mellan 1-5 där 5 utgörs av Gäst.

Vidare har jag en tabell som anger de olika medlemsnivåerna, namn och beskrivning på dessa mer i klartext.

* membershiplevelID
* level
* name
* description

Vilken effekt en viss nivå verkligen får på din sida beror på hur du implementerar det hela rent kodmässigt.

Vidare är mina template sidor är uppbyggda på följande sätt där jag hela tiden kontrollerar en användares medlemsnivå mot den angivan i databasen för en viss sida:

=====================================
Include HEADER

CONTENT
if ($_SESSION["membershiplevel"]<=validate_page(trim($currentPage[1])))

include FOOTER
=====================================

Kommentar:
När en användare loggar in på min sida hämtas samtidigt användarens medlemsnivå som man förslagsvis lagrar i en SESSION. Denna session innehållande medlemsnivå skall vara mindre eller lika med den nivå som funktionen validate_page kommer returnera från tabellen tblSiteNavigation.

Detta är kortfattat hur jag har löst det hela. Kanske inte det bästa sättet men det fungerar bra för mig och jag tycker att jag kommit fram till det på ett logiskt sätt.

Hoppas det var till någon hjälp i ditt tänkade.

:e

pettssonMedlem sedan jan. 2002777 inlägg
#4

Målet är att det ska vara så lite arbete som möjligt att lägga till ny funktionalitet med begränsad åtkomst. Men hur jag än gör blir jag väl tvungen att peta omkring lite för att lägga in det.
Tack för ideerna :)

(lillebror: Kortfattat? §e )

/r:
Kan ju beskriva lite hur det ser ut i nuläget:
Användaren loggar in, userID och privilegier lagras i $_SESSION.
De privilegiekraven är 0, 1, 2, 4, 8, osv. Sedan maskar jag användarens nivå mot den krävda nivån, så här

if($userPriv & $requiredPriv == $requiredPriv) {
 // Tillåt
}
else {
 error_and_die();
}

Någon som ser potentiella problem med detta? Det fungerar iaf i min pappersversion av sidan ;)

lillebrorMedlem sedan apr. 20041 687 inlägg
#5

pettsson skrev:

Men hur jag än gör blir jag väl tvungen att peta lite för att lägga in det.

Hur menar du? :) Helt klart är att det inte är gjort i en handvändning men gör man det rätt från början, så som man skulle vilja ha det, har man igen det senare! :e

lillebrorMedlem sedan apr. 20041 687 inlägg
#6

Jag tycker jag beskrev kortfattat med kod- och tabellexempel så du skulle förstå hela "tänket" bakom! ;)

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb