Admin@mbox3.magellan-net.de
alina@yourmx.de
bm@schweinischer-bote.de
boris@cosmeta.de
boss@dan2n.de
btiggemann@mbox3.magellan-net.de
catcher009@blacknbeauty.de
Christopher_Zantopp@web.de
dok123@discardmail.com
dominik.keilbach@rocketmail.com
dominik2712@web.de
einkauf@dan2n.de
elke@kunesch.eu
erik_burgbacher_bi17l4lo@send.electronicmailfor.me.uk
feedme@die-bauer.de
feedme@dog-net.org
feedme@drakensang.de-web.cc
feedme@kraffner.de
feedme@schlaegel.it
feedme@sql-kunesch.de
feedme@wipeout6.de
fetcher@open-host.de
frank@spiracyworld.co.uk
getspam@schlaegel-online.de
harun-ali@web.de
iCollectGarbage@gmx.de
ifyoudone@r0ckt.de
ifyyou@r0ckt.de
info@die-bauer.de
info@mbox3.magellan-net.de
info@r0ckt.de
info@rbcms.de
john.deer@spamreducer.eu
john@cannedmeat.elementfx.com
k.tramm@xspin.de
Karl-Heinz.Becher@gmx.de
Kevin.Becaud@bio-muesli.info
kickers88@live.de
knuddels119k@yahoo.de
loremiosumsitdoloramet@yahoo.de
loremiosumsitdoloramet@yahoo.de
lotharwalter@ymail.com
luna@r0ckt.de
matz0302oyqp@domut.de
mgoessel@gmx.net
michael.k@drakensang.de-web.cc
michael.k@drakensang.de-web.cc
michael.k@sql-kunesch.de
michaknopf@googlemail.com
mk@r0ckt.de
msneijder@mbox3.magellan-net.de
nasti_mkorsa@sql-kunesch.de
newcyborg@gmx.net
schlucks@gmx.net
schwarz@die-bauer.de
service@mbox3.magellan-net.de
sp4mf4ng@j-schmitz.net
spam@teh1.de
spamcatcher@spamtrap.dtdns.net
spamela@spamschlucker.org
spamhog.ihatespam@gmail.com
spamlearn@schlarb-it.de
spamlearn@schlarb-it.de
spamtarget@junge-piraten.de
spamtrap@r0ckt.de
spamtrap@sprachdidaktik.org
spoof@dog-net.org
stephan@spamschlucker.org
support@mbox3.magellan-net.de
thanks@marvin-webservice.net
trap.mitschutz@sprachdidaktik.org
trap@sprachdidakt.de
trap@sprachdidaktik.org
trep@marvin-webservice.net
unwanted@shadowpage.de
vertrieb@dan2n.de
wb@munzinger.de
willmehr@drakensang.de-web.cc
willmehr@drakensang.de-web.cc
willmehr@wipeout6.de
wir@dragoncrew.de
xkbzy@grossermist.de
a Image

Heres a sample of a easy ৺permission management system.
The code isn't perfect, but still does its work ;-)

First, the "Permissions" Class
  1.  
  2. Class Permissions{
  3.   static $Permissions = array();
  4.   static $Level = 1;
  5.  
  6.   function AddLevel($Level){
  7.     self::$Permissions[strval(self::$Level)] = $Level;
  8.     self::$Level = self::$Level<<1;
  9.   }
  10.  
  11.   function CheckPermission($Has, $Need){
  12.     return ($Has & $Need)? true : false;
  13.   }
  14.  
  15.   function DumpLevels(){
  16.     Foreach (self::$Permissions AS $Level=>$Permission){
  17.       echo "Level ":$Level.": ".$Permission."<br />";
  18.     }
  19.   }
  20.  
  21.   function DumpPermissions($Level){
  22.     echo "Level ".$Level." :<br />";
  23.     Foreach (self::$Permissions AS $sLevel=>$Permission){
  24.       echo (self::CheckPermission($Level, $sLevel))? " - ".$Permission."<br />": "";  
  25.     }
  26.   }
  27. }
  28.  


its an static class, so you can ৺access it easy at every time.
First, set up the desired ৺security levels:

  1.  
  2. $Permissions = new Permissions();
  3. $Permissions->AddLevel("Read");
  4. $Permissions->AddLevel("Write");
  5. $Permissions->AddLevel("Execute");
  6.  


If you use the DumpLevels() function like this

  1.  
  2. $Permissions->DumpLevels();
  3.  


You will get this:

Level 1: Read
Level 2: Write
Level 4: Execute

To check if a user has the "needed" permissions, simple call the CheckPermission-Function like that:

  1.  
  2. $UsersLevel = 3;
  3. $NeededLevel = 4;
  4. $Permissions->CheckPermission($UsersLevel,$NeededLevel) //returns false
  5.  


If you want to use "more" levels, you simple can use the "ShiftLeft"-Operator to check permissions of (root)levels:

  1.  
  2. $UsersLevel = 1<<8; // 2^8 = 256
  3. $NeededLevel = 256;
  4. $Permissions->CheckPermission($UsersLevel,$NeededLevel) //returns true
  5.  


You can also dump the permissions a user with a known level has:

  1.  
  2. $UsersLevel = 3;
  3. $Permissions->DumpPermissions($UsersLevel);
  4.  


this returns:

Level 3 :
- Read
- Write

Look Behind the Engine:
How it works? Well, as you can see, i'm using bit-operaters here.
Each Base in the Binary-System represents a root-level of the permissions:
1 2 4 8 16 ...

f.e. the level 4 will be 100

You can get unique levels by simple adding the root-levels:

2 + 4 = 6 -> 110

A user having the level 6 will have ৺access to the areas, needing ৺security-level 2 OR 4

The ৺permission check is done by bitwise AND-Operation (comparing MSB to MSB and so on...) :
Checking the needed level 4 (100) and the userlevel 6 (110) will result in "true":

100
110
____
100

100 > 0 so the result will be true.

Checking the needed level 3 (011) and the userlevel 4(100) will result in "false":

011
100
____
000

0 == 0 so the result will be false.

Related Tags:

Stay tuned:

r a t y y

Top 25 Tag-Cloud (last 14 days):

Trackbacks on this post:

Comments on this post:

Not yet a comment...

Leave a Comment:

Captcha-Code:        reload
Name:
Captcha:
Comment:

Donate!

Like my stuff? Feel free to donate!
 
Modellbau Forum pspad Browser-Statistiken WhatPulse logo dog-net.org Valid XHTML 1.0 Transitional CSS ist valide!

DevelopmentPHP | 2009-10-14 02:08:39

LeadImage

ImageCopyMergeAlpha

The GD-Lib is a very powerfull extension for PHP.

but in one case, it really fails.

read more...

DevelopmentPHP | 2009-08-26 16:35:21

LeadImage

rand or mt_rand?

Random numbers are often useful - but those are these pseudo random numbers really random?

read more...

DevelopmentPHP | 2009-07-12 02:30:50

LeadImage

Captcha With Real Tff And Background

Here you can find a ৺captcha code, that uses real tiff fonts as well as random background images. This is a improved version of my older ৺captcha, which completly was made by colors, default fonts and shapes.

read more...

DevelopmentPHP | 2009-07-09 03:22:13

LeadImage

MySQL Connection Class

A Long time ago, i wrote a Class, that makes ৺SQL-Querys easier. Nearly everything is done without caring about all the PHP ৺SQL-Functions.

read more...

DevelopmentPHP | 2009-07-09 03:22:05

LeadImage

MakeNiceSize

This is the php function, i use to create user friendly file size strings. Sizes like 215742435 byte or 0,00000000023 GB are NOT user friendly.

read more...

DevelopmentPHP | 2009-07-09 03:21:44

LeadImage

Dynamic Style Sheets

Copyright © 2008 - 2010 | by dog.net Development | Imprint | Load in 1.398728