function getFromGlobs($varname, $default=false, $allowed=false) {
if (isset($GLOBALS[$varname])) $out=$GLOBALS[$varname];
elseif (isset($_POST[$varname])) $out=$_POST[$varname];
elseif (isset($_GET[$varname])) $out=$_GET[$varname];
else $out=$default;
if (is_array($allowed)) {
foreach($allowed as $item) if($out==$item) return $out;
return $default;
}
return $out;
}
function initSession() {
global $db,$sess,$session_alivetime;
if (getSid()!='') {
$sql='DELETE FROM session WHERE lastalive<'.(time()-$session_alivetime);
$db->query($sql);
// Versuche Session wieder aufzunehmen
$sql='SELECT s.screenWidth,s.screenHeight,s.style,u.username,u.mail,u.rights FROM session s LEFT JOIN registered_users u ON (s.uid=u.id) WHERE sid="'.getSid().'"';
$db->query($sql);
if ($db->nextrow()) {
// wenn funktioniert dann erzeuge $sess-Variable
$sess=array(
'user'=>$db->r('username'),
'style'=>$db->r('style'),
'rights'=>$db->r('rights'),
'mail'=>$db->r('mail')
);
}
else {
// wenn nicht dann füge neuen Gastuser ein
// die $sess-Variable musst nicht erzeugt werde, da die Zugriffsfunktionen auf die Session leere Felder abfangen und default-Werte ausgeben
$sql='INSERT INTO session (sid,lastalive,style) VALUES("'.getSid().'",'.time().',"b")';
$db->query($sql);
}
}
}
function createSid() {
srand((double)microtime()*1000000);
return substr('hhg'.uniqid(rand()),0,20);
}
function getSid() {
global $abs_path;
$sid=getFromGlobs('sid');
if (empty($sid)) header('location: '.$abs_path.'index.php?sid='.createSid());
else return $sid;
}
function url() {
return '&sid='.getSid();
}
function form() {
return '<input type="hidden" name="sid" value="'.getSid().'" />';
}
function is($needed) {
$rights=getRights();
if ($needed==$rights) return true;
elseif ($needed=='guest') return true;
elseif (($needed=='admin') and ($rights=='root')) return true;
elseif (($needed=='user') and ($rights=='root')) return true;
elseif (($needed=='user') and ($rights=='admin')) return true;
else return false;
}
/******
/* Funktionen um Daten aus der Session zu holen */
function getUser() {
global $sess;
if ((isset($sess['user'])) and (isValidUser($sess['user']))) return $sess['user'];
else return 'gast';
}
function getRights() {
global $sess;
if (isset($sess['rights'])) return $sess['rights'];
else return 'guest';
}
function getStyle() {
global $sess;
if (isset($sess['style'])) return $sess['style'];
else return 'b';
}
/*****
/* infos */
function getOnUsers() {
global $db, $online_alivetime;
$sql='SELECT COUNT(sid) FROM session s WHERE uid=0';
$db->query($sql);
$GLOBALS['OnGuests']=$db->nextrow()?$db->r('0'):0;
$sql='SELECT COUNT(sid) FROM session s WHERE uid!=0';
$db->query($sql);
$GLOBALS['OnLoggedIn']=$db->nextrow()?$db->r('0'):0;
return $GLOBALS['OnLoggedIn']+$GLOBALS['OnGuests'];
}
function getOnGuests() {
global $db, $online_alivetime;
if (!isset($GLOBALS['OnGuests'])) {
getOnUsers();
}
return $GLOBALS['OnGuests'];
}
function getOnLoggedIn() {
global $db, $online_alivetime;
if (!isset($GLOBALS['OnLoggedIn'])) {
getOnUsers();
}
return $GLOBALS['OnLoggedIn'];
}
function getRegisteredUsers() {
global $db;
if (!isset($GLOBALS["ReggedUsers"])) {
$db->query('SELECT COUNT(id) FROM registered_users');
$GLOBALS["ReggedUsers"]=$db->nextrow()?$db->r("0"):0;
}
return $GLOBALS["ReggedUsers"];
}