Kernfunktionen

SLAED CMS bietet einen umfassenden Satz von Kernfunktionen, die wesentliche Systemoperationen wie Eingabeverarbeitung, Benutzerauthentifizierung, Vorlagenrendering und Sicherheit übernehmen.

Eingabeverarbeitung

SLAED CMS bietet sichere Eingabeverarbeitung durch die getVar-Funktion:

// Numerischen Wert aus GET abrufen
$id = getVar('get', 'id', 'num');

// Gefilterten Text aus POST abrufen
$title = getVar('post', 'title', 'text');

// HTML-Inhalt abrufen (gefiltert)
$content = getVar('post', 'content', 'html');

// E-Mail mit Validierung abrufen
$email = getVar('post', 'email', 'email');

// URL mit Validierung abrufen
$website = getVar('post', 'website', 'url');

// Variablenname abrufen (alphanumerisch + Unterstrich)
$module = getVar('get', 'name', 'var');

Eingabetypen:

  • num - Nur Zahlen
  • text - Sicherer Text (HTML maskiert)
  • html - Gefilterter HTML-Inhalt
  • email - Gültige E-Mail-Adressen
  • url - Gültige URLs
  • var - Variablennamen (a-z, A-Z, 0-9, -, _)

Benutzerauthentifizierung

Benutzerauthentifizierungsfunktionen helfen bei der Bestimmung des Benutzerstatus und der Berechtigungen:

// Prüfen, ob Benutzer angemeldet ist
if (is_user()) {
    // Benutzer ist authentifiziert
}

// Prüfen, ob Benutzer Administrator ist
if (is_admin()) {
    // Benutzer hat Admin-Rechte
}

// Prüfen, ob Benutzer Super-Admin ist
if (is_admin_god()) {
    // Benutzer hat höchste Rechte
}

// Prüfen, ob Benutzer Modul-Moderator ist
if (is_moder($module_name)) {
    // Benutzer kann bestimmtes Modul moderieren
}

// Prüfen, ob Anfrage von Suchmaschinen-Bot kommt
if (is_bot()) {
    // Anfrage von Suchmaschinen-Crawler
}

Benutzerinformationen

global $user;

// Struktur des Benutzerdaten-Arrays:
// $user[0] = Benutzer-ID
// $user[1] = Benutzername
// $user[2] = E-Mail
// $user[3] = Benutzergruppe/Rolle
// $user[4] = Avatar-Dateiname
// $user[5] = Signatur

// Aktuelle Benutzer-ID abrufen
$user_id = is_user() ? intval($user[0]) : 0;

// Benutzerinformationen per ID abrufen
function get_user_data($user_id) {
    global $db, $prefix;
    $stmt = $db->prepare("SELECT user_id, user_name, user_email, user_group, user_avatar FROM {$prefix}_users WHERE user_id = ?");
    $stmt->bind_param("i", $user_id);
    $stmt->execute();
    return $stmt->get_result()->fetch_assoc();
}

Vorlagenfunktionen

Vorlagenfunktionen behandeln das Rendern von Seiten und die Ausgabe:

// Design-Dateien einbinden
function setThemeInclude() {
    global $theme;
    $theme = get_theme();
    include_once('templates/'.$theme.'/index.php');
    include_once('core/template.php');
}

// Aktuelles Design abrufen
$current_theme = get_theme();

// Grundvorlagen-Rendering
function setTemplateBasic($type, $values = array()) {
    // $type: 'title', 'content', 'pagination', etc.
    // $values: Array von Platzhalter => Wert Paaren
}

// Warnungs-/Nachrichtenvorlagen
function setTemplateWarning($type, $values = array()) {
    // $type: 'info', 'warn', 'error', 'success'
    // $values: Nachrichtenparameter
}

Seitenstruktur

// HTML-Ausgabe starten (Header, Navigation)
head();

// Ihr Inhalt hier
echo '

Modulinhalt

'; echo '

Ihr Modulinhalt...

'; // HTML-Ausgabe beenden (Footer) foot();

Sicherheitsfunktionen

Sicherheitsfunktionen schützen vor gängigen Web-Schwachstellen:

// String auf Sicherheit analysieren
function analyze($string) {
    return preg_replace('#[^a-zA-Z0-9_-]#', '', $string);
}

// XSS-Schutz
function xss_clean($string) {
    return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}

// HTML-Inhalt filtern
function filter_html($html, $allowed_tags = '<p><br><strong><em><u><a><img><ul><ol><li>') {
    return strip_tags($html, $allowed_tags);
}

CSRF-Schutz

// CSRF-Token generieren
function generate_csrf_token() {
    if (!isset($_SESSION['csrf_token'])) {
        $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    }
    return $_SESSION['csrf_token'];
}

// CSRF-Token verifizieren
function verify_csrf_token($token) {
    return isset($_SESSION['csrf_token']) && hash_equals($_SESSION['csrf_token'], $token);
}

// CSRF-Token Formularfeld
function csrf_token_field() {
    return '';
}

Hilfsfunktionen

Verschiedene Hilfsfunktionen für gängige Operationen:

String-Operationen

// String auf bestimmte Länge kürzen
function cutstr($string, $length, $suffix = '...') {
    if (mb_strlen($string) > $length) {
        return mb_substr($string, 0, $length) . $suffix;
    }
    return $string;
}

// Zufälligen String generieren
function generate_random_string($length = 32) {
    return bin2hex(random_bytes($length / 2));
}

Datum und Uhrzeit

// Zeitstempel formatieren
function format_time($timestamp, $format = 'Y-m-d H:i:s') {
    return date($format, $timestamp);
}

// Zeit vor Funktion
function time_ago($timestamp, $language = 'de') {
    $diff = time() - $timestamp;
    
    if ($diff < 60) {
        return 'vor ' . $diff . ' Sekunden';
    } elseif ($diff < 3600) {
        $minutes = floor($diff / 60);
        return 'vor ' . $minutes . ' Minute' . ($minutes != 1 ? 'n' : '') . '';
    } elseif ($diff < 86400) {
        $hours = floor($diff / 3600);
        return 'vor ' . $hours . ' Stunde' . ($hours != 1 ? 'n' : '') . '';
    } else {
        $days = floor($diff / 86400);
        return 'vor ' . $days . ' Tag' . ($days != 1 ? 'en' : '') . '';
    }
}

Konstanten und Globale

Wichtige Konstanten und globale Variablen, die in SLAED CMS verfügbar sind:

// Kernkonstanten
define('MODULE_FILE', true);    // Modul-Kontext
define('ADMIN_FILE', true);     // Admin-Kontext
define('BLOCK_FILE', true);     // Block-Kontext
define('FUNC_FILE', true);      // Funktions-Kontext

// Verzeichniskonstanten
define('BASE_DIR', str_replace('\\', '/', dirname(__DIR__)));
define('CONFIG_DIR', BASE_DIR.'/config');
define('UPLOADS_DIR', BASE_DIR.'/uploads');
define('CACHE_DIR', BASE_DIR.'/storage/cache');
define('LOGS_DIR', BASE_DIR.'/storage/logs');

// Globale Variablen
global $db;           // Datenbankverbindung
global $prefix;       // Tabellenpräfix
global $user;         // Aktuelle Benutzerinfo
global $conf;         // Konfigurationsarray
global $currentlang;  // Aktuelle Sprache