31 lines
929 B
PHP
31 lines
929 B
PHP
<?php
|
|
/** HTML-sicher ausgeben */
|
|
function e($value) {
|
|
return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
|
|
}
|
|
|
|
/** CSRF-Token für Formulare erzeugen/holen */
|
|
function csrf_token() {
|
|
if (empty($_SESSION['csrf_token'])) {
|
|
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
|
|
}
|
|
return $_SESSION['csrf_token'];
|
|
}
|
|
|
|
/** CSRF-Token prüfen, bricht bei Ungültigkeit ab */
|
|
function csrf_check() {
|
|
$token = $_POST['csrf_token'] ?? '';
|
|
if (!$token || !hash_equals($_SESSION['csrf_token'] ?? '', $token)) {
|
|
http_response_code(400);
|
|
die('Ungültige Anfrage (Sicherheitstoken fehlt oder abgelaufen). Bitte Seite neu laden und erneut versuchen.');
|
|
}
|
|
}
|
|
|
|
/** Datum hübsch formatieren, z.B. 2026-08-03 -> 03.08.2026 */
|
|
function format_datum($isoDate) {
|
|
if (!$isoDate) return null;
|
|
$ts = strtotime($isoDate);
|
|
if (!$ts) return e($isoDate);
|
|
return date('d.m.Y', $ts);
|
|
}
|