/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Adgangsbegrænsning
Fra : Jimmy


Dato : 23-08-03 12:31

Hej

Jeg skal lave en side, hvor man kan redigere en persons data.

Personen der redigerer skal kunne *se* alle data, men kun rette i dem, han
har adgangsniveau til.

Jeg klarer dette ved at jeg ved hver information checker deres niveau og
enten viser et redigeringsfelt, eller en ren tekstlinie.

Under opdatering af databasen gør jeg det samme ved at checke deres niveau
og tilføje en linie til SQL-strengen, hvis de har adgang til at rette
feltet.


Dette er imidlertid temmeligt besværligt - Hvordan gør I?

Mvh
Jimmy



 
 
Dennis Møllegaard Pe~ (23-08-2003)
Kommentar
Fra : Dennis Møllegaard Pe~


Dato : 23-08-03 13:25

On Sat, 23 Aug 2003 13:31:01 +0200, Jimmy wrote:

> Personen der redigerer skal kunne *se* alle data, men kun rette i dem, han
> har adgangsniveau til.

Jeg havde næsten samme problemstilling og fandt følgende løsning.

Jeg lavede et array som indeholder alle informationer til at kunne lave
formularen:

Fx:
$mega = array();
$meta[] = array
(
'type' = 'string',
'name' = 'username',
'filter' = SF_ADMIN | SF_SUPERADMIN
...
);

$meta[] = array
(
'type' = 'string',
'name' = 'password',
'filter' = SF_SUPERADMIN
...
);

Jeg har så flere informationer så som, valideringsregler, fejlmeddelelser,
hjælpe-tekst m.fl.

Jeg har så en funktion (faktisk en klasse) der laver formularen. Den
kaldes ved:

LavMinFormular(&$meta,SF_ADMIN); // vil kunne redigere: username
LavMinFormular(&$meta,SF_SUPERADMIN); // Vil kunne redigere: username,
password

Pseudokoden for LavMinFormular() er:

function($meta,$filter)
{
foreach($meta as $field)
{
if( $field['filter'] & $filter )
// lav felt til redigering
else
// vis-værdien
}
}

Når en bruger så logger ind, skal du bare vide hvilken adgangs-gruppe han
har, fx SF_ADMIN, som du kan gemme i din session-data, og så kan du blot
skrive: LavMinFormular(&$meta,$_SESSION['adgangsgruppe']);

Adgangsgrupper skal være et tal der består af én bit; fx
SF_ADMIN = 1 (binært: 0001)
SF_SUPERADMIN = 2 (binært: 0010)
SF_NA1 = 4 (binært: 0100)
SF_NA2 = 8 (binært: 1000)

Grunden til dette er at vi gerne vil kunne gøre følgende:
'filter' = SF_ADMIN | SF_SUPERADMIN (SF_ADMIN | SF_SUPERADMIN = (binært) 0011 ..
Hvis nu SF_NA1 var 3 (binært 0011), så vil vi ikke kunne se om filter var
SF_NA1 eller SF_ADMIN | SF_SUPERADMIN.

Jeg kan se at min forklaring ikke er ret god, men jeg håber du forstår
ideen. Ellers må du spørge.

--
Dennis Møllegaard Pedersen



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste