Flag berekenen

Dit is systeem is gebaseerd op de rechten systeem van Linux. Elke bestand of map heeft rechten en aan dat systeem kan linux zien of een programma dat bestand kan lezen, wijzigen of uitvoeren. Respectievelijk: 20, 21,22. Reken tel dit bij elkaar op: 20 = 1, 21 = 2 en 22 = 4. 1 + 2 + 4 = 7.
Een 7 betekend dat de gebruiker, Schrijf, Lees, uitvoer rechten heeft. En 3 betekend dat de gebruiker uitvoer en schrijf rechten heeft. Maar geen lees Rechten.
Je raad dus al dat dit een perfect systeem is.

Met dit voorbeeld ga ik uit van een niet bestaande website. Dit om beter duidelijk te maken wat dit systeem kan.
Deze website kunnen mensen het volgende:
Forum berichten plaatsen/editen/verwijderen (Eigen posts).
Forum berichten van andere mensen editen en wijzigen (Modje functie).
Nieuws berichten plaatsen.
Nieuwsbrief verzenden.
Leden beheren.

Elke 'recht' krijgt nu nummer beginnend bij de 0 en loopt steeds met 1 op.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$rechten
['0'] == "Leden";
$rechten['1'] == "Moderator";
$rechten['2'] == "Nieuws";
$rechten['3'] == "Nieuwsbrief";
$rechten['4'] == "Leden Beheren";
?>


Doordat je met de machten van 2 werkt is er nooit een overlap of een uit komst mogelijk waar 2 of meerdere manier zijn. Maar hoe bereken je het.

Heel simpel met je eigen maakte functie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
31
<?php
function calc_flag($array)
{

 $num = 0;
 for($i = 0;$i < 5 /*aantal velden*/;$i++)
 {

     if($array[$i] == 1)
     {

         $num = pow(2,$i) + $num;
     }
 }

 return $num;
}

//voorbeeld
$rechten = array();
$rechten['0'] = 1;
$rechten['1'] = 0;
$rechten['2'] = 1;
$rechten['3'] = 0;
$rechten['4'] = 0;
echo calc_flag($rechten);
// 5
$rechten = array();
$rechten['0'] = 1;
$rechten['1'] = 1;
$rechten['2'] = 1;
$rechten['3'] = 1;
$rechten['4'] = 1;
echo calc_flag($rechten);
//31
?>

Dit sla je op in de database en kun je later weer op vragen. Ik neem aan dat iedereen wel weet hoe het moet.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Uitleg
  2. Rechten berekenen
  3. Flag berekenen

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.