Location: PHPKode > projects > iLP System > Release 2.2/upload/_backend/index.php
<?php
/**
 * iLP System Offiziere Hauptseite
 * 
 * Autor:		Florian "ApoY2k" Peschka
 * Projekt:		iLP System
 * Paket:		apoy2k.ilp.wrynn
 * Lizenz:		CreativeCommons (by-nc-sa)
 * Kontakt:		hide@address.com
 * Version:		2.1.1
 */
session_start();

/**
 * Set a new constant to define the user is currently active on the officer panel so
 * the correct templates are loaded
 */
define('BACKEND_ACTIVE', true);

// Run configuration
require_once('../lib/lib.config.php');

// URL entschlüsseln und im Template-Array speichern.
// Wenn die URL keine Informationen erhält, wird das Start-Template eingebunden
isset($_GET['ilp']) ? $tpl['url'] = ilpUrlDecode($_GET['ilp']) : $tpl['url'][0] = 'start';

/**
 * Login über Cookies überprüfen. Wenn die Daten übereinstimmen, wird der User
 * in die laufende Session eingeloggt und das normale Session-Array gespeichert.
 *
 * Wenn kein Cookie gesetzt ist, werden die nötigen Logindaten aus der Session
 * ermittelt.
 */
if (isset($_COOKIE['ilp']))
{
	$login_info = unserialize(base64_decode($_COOKIE['ilp']));
}
elseif (isset($_SESSION['user']))
{
	$login_info = $_SESSION['user'];
}

// Die ermittelten Logindaten verarbeiten und prüfen.
if (isset($login_info))
{
	
	/**
	 * Daten des Benutzers mit dem in der Session angegebenen Namen suchen.
	 * Um MySQL-Injection zu vermeiden, wird die Anfrage vorher vorbereitet.
	 */
	$get_info = $db->prepare("SELECT * FROM `ilp_users` WHERE `id` = ?");
	$get_info->execute(array($login_info['id']));
	
	/**
	 * Wenn ein Benutzer mit dem Namen gefunden wurde, prüfen, ob das Passwort sowie
	 * der beim Einloggen gespeicherte Browserhash übereinstimmen.
	 */
	if (0 != $get_info->rowCount())
	{
		$arr_info = $get_info->fetch(PDO::FETCH_ASSOC);
		
		if ($arr_info['pw'] === $login_info['pw'])
		{
			if (md5($_SERVER['HTTP_USER_AGENT']) == $login_info['agent'])
			{
				if (1 == $arr_info['officer'])
				{
					// Gefundene Informationen in die Session speichern.
					$user = $arr_info;
					$user['agent'] = $login_info['agent'];
					
					$_SESSION['user'] = $user;
					
					/**
					 * Für die korrekte Anzeige in den Templates werden einige Daten des
					 * User-Arrays ebenfalls an die Template-Engine weitergegeben
					 */
					$tpl['user'] = $user;
					$tpl['user']['logged'] = true;
					$tpl['user']['char'] = unserialize($tpl['user']['char']);
				}
				else
				{
					die($lang['error']['noaccess']);
				}
			}
			else
			{
				die($lang['error']['noaccess']);
			}
		}
		else
		{
			die($lang['error']['password']);
		}
	}
	else
	{
		die($lang['error']['noaccess']);
	}
}
else
{
	die($lang['error']['noaccess']);
}


/**
 * Vom User eingestellte Sprachen anpassen
 * 
 * Wenn der Benutzer in den Einstellungen andere Sprachen eingestellt hat,
 * wie es vom System vorgesehen ist, werden diese Einstellungen überschrieben und
 * die vom Benutzer eingestellte Sprache verwendet.
 */
isset($tpl['user']['lang']) ? $lang['locale'] = $tpl['user']['lang'] : null;
isset($tpl['user']['tooltip_locale']) ? $lang['tooltip_locale'] = $tpl['user']['tooltip_locale'] : null;

// Includes the current localization file
if ('deDE' == $lang['locale'])
{
	require_once(BASEDIR.'lib/lib.lang.'.$lang['locale'].'.php');
}
else
{
	require_once(BASEDIR.'lib/lib.lang.deDE.php');
	require_once(BASEDIR.'lib/lib.lang.'.$lang['locale'].'.php');
}

/**
 * Spezielle Zusatzseiten laden
 * 
 * Um möglichst wenige Code-Overhead zu laden, wird jede Seite einzeln angesprochen
 * und nur geladen, wenn sie benötigt wird.
 */
if (isset($tpl['url'][0]))
{
	if ('start' == $tpl['url'][0]) require_once('start.php');
	if ('search' == $tpl['url'][0]) require_once('search.php');
	if ('users' == $tpl['url'][0]) require_once('users.php');
	if ('events' == $tpl['url'][0]) require_once('events.php');
	if ('eventtypes' == $tpl['url'][0]) require_once('eventtypes.php');
	if ('reqs' == $tpl['url'][0]) require_once('reqs.php');
	if ('system' == $tpl['url'][0]) require_once('system.php');
}
else
{ require_once('start.php'); }


// Hauptseite einbinden
showTemplate('index', $tpl, $lang);
?>
Return current item: iLP System