Gan įdomiai gaunasi, localhoste jeigu esu atsijungęs (SESSSION['id'] = 0) man priskiriama tik viena konstanta - iGUEST. Jeigu esu prisjungęs - pagal mano teises priskiria tam tikrą konstantą.
Štai branduolys kaip tai vyksta:
<?php
$my_data = DB::queryRaw('SELECT * FROM users WHERE id = %i',$_SESSION['id']) -> fetch_assoc();
if(!(isset($_SESSION['id']))) {
$_SESSION['id'] = 0;
} else {
$teises = main::decode(substr($my_data['permissions'], 0, 2)); // iš permissions laukelio parenka du pirmus simbolius, kuriuose užkoduota mano teisės - tai viena iš raidžių O, A, B , C, D ar E.
define("iREADER",($teises == "E" ? 1 : 0));
define("iMEM",($teises == "D" ? 1 : 0));
define("iAUTHOR",($teises == "C" ? 1 : 0));
define("iMOD",($teises == "B" ? 1 : 0));
define("iADMIN",($teises == "A" ? 1 : 0));
define("iOWNER",($teises == "O" ? 1 : 0));
}
define("iGUEST",(!iADMIN and !iAUTHOR and !iMEM and !iMOD and !iREADER and !iOWNER ? 1 : 0));
?>
Šis mechanizmas puikiai veikia localhoste, bet svetainėje www.simplomino.blg.lt ...
Index.php pasirašiau štai tokį koduką, atvaizduojantį kokios yra mano teisės bei sesijos id.
<?php
if(iREADER) { echo 'Aš skaitytojas | '; }
if(iMEM) { echo 'Aš narys | '; }
if(iAUTHOR) { echo 'Aš autorius | '; }
if(iMOD) { echo 'Aš moderatorius | '; }
if(iADMIN) { echo 'Aš Adminas | '; }
if(iGUEST) { echo 'Aš svečias | ';}
echo 'SESSION[\'id\'] = '.$_SESSION['id'];
?>
Svetainėje atvaizduoja visas teises, nesvarbu ar svečias aš ar ne.