Hoi,
Ik ben 'n PHP applicatie aan het maken. Het is de bedoeling dat verschillende acties in 'n tabel komen. Van daaruit kan ik kijken of de actie uitgevoerd en weergegeven mag worden.
Dus daarvoor heb ik een functie in het leven geroepen.
De structuur van de tabbelen is:
Users - Classes - Actions.
Tussen de 3 tabellen zitten 2 koppeltabellen voor een 'veel-op-veel' relatie.
Het onderstaande SQL statement kan meerdere rijen opleveren, omdat een actie bv. in 2 classes kan staan. De gebruiker hoeft niet per sé op beide rijen een uitkomst TRUE te hebben, omdat een class de ene keer 'denied' op kan leveren, maar de andere keer 'allowed' (1 of 0).
Je moet een beetje aan het Windows policy management idee denken.
Ik wil weten:
- is het account geactiveerd ($strAccountEnabled)
- Is de classe (soort van policy) geactiveerd. ($strClassAllowed)
- Heeft de betreffende gebruiker de betreffende actie toegewezen gekregen (checken van mysql_nuw_rows)
- Is de betreffende actie geactiveerd ($strActionEnabled)
- daarna nog of de actie binnen de tijd uitgevoerd mag worden.
Ik weet eigenlijk niet precies hoe ik het checken van allles moet handlen. Dit o.a. bij het checken van een classe. De waarde van $strClassAllowed kan 0,1 of "leeg" zijn.
0 = denied, (dus einde oefening en return false)
1 = enforced toegestaan, (return true stoppen?)
"leeg" toegestaan (niets returnen en doorgaan naar volgend record)
Ik zat al te denken aan functies in deze functie mbv. switch/case contructies.
Hoe kan ik het beste deze criteria handlen met zo min mogelijk preformance verlies?
Misschien handig
PHP 5.04
MySQL 5.0
IIS6 / Win2003Ent.
Ik ben 'n PHP applicatie aan het maken. Het is de bedoeling dat verschillende acties in 'n tabel komen. Van daaruit kan ik kijken of de actie uitgevoerd en weergegeven mag worden.
Dus daarvoor heb ik een functie in het leven geroepen.
De structuur van de tabbelen is:
Users - Classes - Actions.
Tussen de 3 tabellen zitten 2 koppeltabellen voor een 'veel-op-veel' relatie.
Het onderstaande SQL statement kan meerdere rijen opleveren, omdat een actie bv. in 2 classes kan staan. De gebruiker hoeft niet per sé op beide rijen een uitkomst TRUE te hebben, omdat een class de ene keer 'denied' op kan leveren, maar de andere keer 'allowed' (1 of 0).
Je moet een beetje aan het Windows policy management idee denken.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| //fHasAccess() function fHasAccess($fstrUserID, $fstrActionName) { if (fIsLoggedOn() == true) { include("DBconnect.php"); $SQL = "SELECT "; $SQL .= " USR_Enabled, "; $SQL .= " UCL_Allowed, "; $SQL .= " ACT_Enabled, "; $SQL .= " ACT_StartTime, "; $SQL .= " ACT_EndTime "; //En 'n heleboel innerjoins... $SQL .= "WHERE "; $SQL .= " (((USR_ID)='$fstrUserID') "; $SQL .= "AND ((ACT_Name)='$fstrActionName'))"; $rs = mysql_query($SQL) or die ("fout: " . mysql_error()); echo $SQL . "<br>"; while (list($strAccountEnabled, $strClassAllowed, $strActionEnabled, $strActionStartTime, $strActionEndTime)= mysql_fetch_row($rs)) { //De grote vraag van dit topic. }//end while } else { return false; break; } }//end function |
Ik wil weten:
- is het account geactiveerd ($strAccountEnabled)
- Is de classe (soort van policy) geactiveerd. ($strClassAllowed)
- Heeft de betreffende gebruiker de betreffende actie toegewezen gekregen (checken van mysql_nuw_rows)
- Is de betreffende actie geactiveerd ($strActionEnabled)
- daarna nog of de actie binnen de tijd uitgevoerd mag worden.
Ik weet eigenlijk niet precies hoe ik het checken van allles moet handlen. Dit o.a. bij het checken van een classe. De waarde van $strClassAllowed kan 0,1 of "leeg" zijn.
0 = denied, (dus einde oefening en return false)
1 = enforced toegestaan, (return true stoppen?)
"leeg" toegestaan (niets returnen en doorgaan naar volgend record)
Ik zat al te denken aan functies in deze functie mbv. switch/case contructies.
Hoe kan ik het beste deze criteria handlen met zo min mogelijk preformance verlies?
Misschien handig
PHP 5.04
MySQL 5.0
IIS6 / Win2003Ent.
[ Voor 31% gewijzigd door DDemolition op 26-11-2005 13:44 ]
Specs: Server, WS boven, WS beneden