W przypadku opisywanej aplikacji, wszystkie dane odnośnie zalogowanego użytkownika są przechowywane w zmiennych sesji. Do generowania zmiennych sesji służy funkcja setsessionvars, której kod przedstawiłem poniżej.
function setsessionvars($login){
require_once('objects/db.php');
require_once('objects/defines.var.php');
$roomtypes=array();
$rightypes=array();
$db = new db;
$db -> conn(db_adress,db_user,db_password);
$db -> selectDB(db_name);
$db->query("select user_id,user_type_id from users where login='$login'");
$row=$db->nextrow();
$id=$row[user_id];
$allrights=0;
Zapytanie poniżej, zwraca wszystkie rekordy z tabeli user_rights w których user_id to user_id, po to żeby wiedzieć jakie dany użytkownik ma typy praw i żeby potem stworzyć odpowiednie menu w oparciu o wygenerowana tablice zawierająca prawa dla danego użytkownika.
$db->query("
SELECT * FROM users as u RIGHT JOIN user_rights as ur ON u.user_id = ur.user_id WHERE ur.user_id='$id'");
while ($row=$db->nextrow()){
$rightypes[]=$row[user_right_type_id];
if ($row[user_right_type_id]==1){$allrights=1;}
}
Zapytanie poniżej, zwraca wszystkie rekordy z tabeli room_rights, w których user_id to aktualny identyfikator zalogowanego w systemie użytkownika, po to żeby wiedzieć, jakie dany użytkownik typy pokoi może wyświetlać lub wyszukiwać. Generowana jest tablica zawierająca zdefiniowane dla danego użytkownika typy pokoi.
$db->query("
SELECT * FROM users as u RIGHT JOIN room_rights as rr ON u.user_id = rr.user_id WHERE rr.user_id='$id'");
$all=0;
while ($row=$db->nextrow()){
$roomtypes[]=$row[room_type_id];
if ($row[room_type_id]==16) {$all=1;}
}
Rejestrowane są zmienne sesji w których odpowiednio przechowywane są login , typ użytkownika , jakie użytkownik ma prawa i jakie typy pomieszczeń może oglądać oraz czy jest ustawiona zmienna wszystkie prawa oraz wszystkie typy pomieszczeń.
$_SESSION['user']=$login;
$_SESSION['type']=$id;
$_SESSION['rightypes']=$rightypes;
$_SESSION['roomtypes']=$roomtypes;
$_SESSION['allrooms']=$all;
$_SESSION['allrights']=$allrights;
Copyright © 2008-2010 EPrace oraz autorzy prac.