Kernfunktionen
SLAED CMS bietet einen umfassenden Satz von Kernfunktionen, die wesentliche Systemoperationen wie Eingabeverarbeitung, Benutzerauthentifizierung, Vorlagenrendering und Sicherheit übernehmen.
Inhaltsverzeichnis
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 Zahlentext
- Sicherer Text (HTML maskiert)html
- Gefilterter HTML-Inhaltemail
- Gültige E-Mail-Adressenurl
- Gültige URLsvar
- 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