Dashboard
Veranstaltungen
Anmeldungen
Protokoll
Administratoren
Nach 5 fehlgeschlagenen Login-Versuchen wird eine IP für 15 Minuten gesperrt. Hier können aktive Sperren vorzeitig aufgehoben werden.
Berechtigungsgruppen
Nur Superadmin-Benutzer können Gruppen verwalten. Die Gruppe "Administratoren" hat vollen Zugriff und kann nicht gelöscht werden.
Einstellungen
config.php konfiguriert sein.
🕐 Cron-Job (Mail-Warteschlange)
Der Cron-Job verarbeitet die Mail-Warteschlange (z. B. Absage-Mails). Richten Sie ihn auf Ihrem Server ein, z. B. alle 5 Minuten:
php /pfad/zu/cron.php | Der Token in der URL ist geheim – geben Sie ihn nicht weiter.
📪 Test-Mail senden
Erstellt auf Anfrage einen vollständigen Datenauszug aller gespeicherten Daten zu einer E-Mail-Adresse (Art. 15 DSGVO).
🔌 API
Externe Anwendungen authentifizieren sich über den HTTP-Header X-API-Key (alternativ Authorization: Bearer …). Der Klartext-Schlüssel wird nur unmittelbar nach der Erstellung angezeigt – notieren Sie ihn sicher, denn er kann später nicht erneut eingesehen werden.
Es wurden noch keine API-Schlüssel erstellt.
Alle Endpunkte werden per POST als JSON an /api.php gesendet – das Feld action bestimmt den aufgerufenen Endpunkt. Zur Authentifizierung senden Sie einen gültigen API-Schlüssel im Header X-API-Key (alternativ Authorization: Bearer IHR_SCHLÜSSEL). Ohne gültigen Schlüssel antwortet die API mit Status 401.
1. Veranstaltungen abrufen
action: "api_get_events" – liefert alle künftigen Veranstaltungen inklusive der Anzahl noch verfügbarer Plätze.
curl -X POST https://IHRE-DOMAIN/api.php \
-H "Content-Type: application/json" \
-H "X-API-Key: IHR_SCHLÜSSEL" \
-d '{"action": "api_get_events"}'
{
"success": true,
"events": [
{
"id": "a1b2c3d4e5f60718",
"name": "Sommerfest",
"description": "…",
"location": "Vereinsheim",
"date": "2026-07-12",
"time": "18:00",
"tickets_required": 1,
"price": "5.00",
"ticket_link": null,
"max_tickets": 100,
"registration_deadline": "2026-07-05",
"booking_closed": 0,
"is_cancelled": 0,
"tickets_available": 42
}
]
}
Hinweis: tickets_available ist null, wenn die Veranstaltung kein Kartenlimit (max_tickets) besitzt. is_cancelled: 1 bedeutet, dass die Veranstaltung abgesagt wurde – Anmeldungen über api_register werden dann mit HTTP 409 abgewiesen.
2. Angemeldete Personen abrufen
action: "api_get_attendees" – liefert die Namen und Anmeldezeitpunkte aller für eine Veranstaltung angemeldeten Personen (ohne E-Mail-Adressen).
curl -X POST https://IHRE-DOMAIN/api.php \
-H "Content-Type: application/json" \
-H "X-API-Key: IHR_SCHLÜSSEL" \
-d '{"action": "api_get_attendees", "event_id": "a1b2c3d4e5f60718"}'
{
"success": true,
"attendees": [
{ "name": "Max Mustermann", "registered_at": "2026-06-01 10:15:32" }
]
}
| Feld | Beschreibung |
|---|---|
event_id | ID der Veranstaltung (siehe Antwort von api_get_events). Pflichtfeld. |
3. Anmeldung erstellen
action: "api_register" – meldet eine Person zu einer Veranstaltung an. Es gelten dieselben Prüfungen wie im Anmeldeformular (Kartenlimit, Anmeldefrist, Buchungssperre, Mehrfachanmeldung mit derselben E-Mail-Adresse). Das Feld tickets ist nur bei Veranstaltungen mit Ticketpflicht (tickets_required: true) erforderlich – bei Veranstaltungen ohne Ticketpflicht kann es weggelassen werden, die Anmeldung erfolgt dann automatisch mit 1 Karte.
curl -X POST https://IHRE-DOMAIN/api.php \
-H "Content-Type: application/json" \
-H "X-API-Key: IHR_SCHLÜSSEL" \
-d '{
"action": "api_register",
"event_id": "a1b2c3d4e5f60718",
"name": "Max Mustermann",
"email": "max@example.com",
"tickets": 2,
"binding_confirmed": true
}'
{ "success": true, "message": "Erfolgreich angemeldet!" }
| Feld | Beschreibung |
|---|---|
event_id | ID der Veranstaltung (siehe Antwort von api_get_events). Pflichtfeld. |
name | Name der anzumeldenden Person. Pflichtfeld. |
email | Gültige E-Mail-Adresse; wird zur Erkennung von Doppelanmeldungen verwendet. Pflichtfeld. |
tickets | Anzahl der Karten (1–30). Nur erforderlich, wenn die Veranstaltung tickets_required: true hat (siehe Antwort von api_get_events); bei Veranstaltungen ohne Ticketpflicht wird das Feld ignoriert und automatisch auf 1 gesetzt und kann daher entfallen. |
binding_confirmed | Optional, Standard false. true, wenn die Person eine verbindliche Anmeldung bestätigt hat. |
Fehlerantworten
Bei Fehlern liefert die API "success": false sowie eine sprechende message und einen passenden HTTP-Status-Code:
401 (Schlüssel fehlt/ungültig/widerrufen), 404 (Veranstaltung nicht gefunden), 409 (z. B. Veranstaltung abgesagt, ausgebucht, Anmeldefrist abgelaufen, bereits angemeldet) sowie 400 bei fehlerhaften Eingaben.
❓ Hilfe & Dokumentation
Diese Seite erklärt alle Bereiche und Einstellungen des Admin-Panels. Klicken Sie auf eine Überschrift, um den jeweiligen Abschnitt ein- oder auszuklappen.
Dashboard
Das Dashboard bietet auf einen Blick die wichtigsten Kennzahlen des Veranstaltungsplaners.
| Element | Beschreibung |
|---|---|
| KPI-Karten | Zeigen die Gesamtzahl der Veranstaltungen, aktive Veranstaltungen, Anmeldungen heute sowie offene Abmeldeanfragen an. |
| Anmeldungen pro Monat | Balkendiagramm der letzten 12 Monate – gibt einen schnellen Überblick über Peaks und ruhige Phasen. |
| Top-6 Veranstaltungen | Zeigt die sechs meistgebuchten Veranstaltungen nach Anzahl der Anmeldungen. |
| Anmeldestatus-Donut | Aufschlüsselung aller Anmeldungen nach Status (bestätigt, storniert, ausstehend). |
| Aktualisieren‑Schaltfläche | Lädt alle Dashboard-Daten neu, ohne die Seite vollständig neu zu laden. |
Veranstaltungen
Im Bereich Veranstaltungen verwalten Sie alle Events des Vereins – von der Anlage bis zur Archivierung.
| Funktion | Beschreibung |
|---|---|
| Veranstaltung anlegen | Öffnet ein Formular für Name, Datum, Uhrzeit, Ort, Beschreibung, maximale Teilnehmerzahl, Kartenanzahl und Preis. Pflichtfelder sind mit * markiert. |
| Veranstaltung bearbeiten | Alle Felder können jederzeit nachträglich geändert werden. Änderungen sind sofort wirksam. |
| Aktiv / Inaktiv | Inaktive Veranstaltungen sind für Besucher nicht buchbar, bleiben aber in der Datenbank erhalten. |
| Anmeldeschluss | Optionales Datum, nach dem keine neuen Anmeldungen mehr angenommen werden. Leer lassen für keinen Anmeldeschluss. |
| Vergangene Veranstaltungen | Werden grau dargestellt und können über die Suchleiste gefunden werden. |
| Veranstaltung löschen | Löscht die Veranstaltung und alle zugehörigen Anmeldungen unwiderruflich. Ein Bestätigungsdialog schützt vor versehentlichem Löschen. |
| Suche | Filtert die Tabelle live nach dem eingegebenen Suchbegriff (Name, Datum, Ort). |
Anmeldungen
Hier sehen und verwalten Sie alle Anmeldungen der Besucher, inklusive Abmeldeanfragen.
| Funktion | Beschreibung |
|---|---|
| Filter nach Veranstaltung & Status | Schränkt die Tabelle auf eine bestimmte Veranstaltung oder einen Status (alle, bestätigt, storniert) ein. |
| Manuell hinzufügen | Ermöglicht die Eintragung einer Anmeldung ohne Online-Formular, z. B. für Telefonanmeldungen. Name, E-Mail, Kartenanzahl und Veranstaltung sind auszufüllen. |
| Anmeldung löschen | Entfernt die Anmeldung nach Bestätigung dauerhaft aus der Datenbank. |
| Export (CSV / Excel) | Exportiert alle sichtbaren Anmeldungen im CSV-Format, das mit Excel, LibreOffice Calc und Numbers geöffnet werden kann. |
| Import (CSV) | Ermöglicht den Massenimport von Anmeldungen über eine CSV-Datei. Die erste Zeile muss die Spaltennamen enthalten. |
| Abmeldeanfragen | Hebt eingegangene Abmeldewünsche hervor (roter Badge). Anfragen können einzeln akzeptiert (Anmeldung wird storniert) oder abgelehnt werden. |
Protokoll (Audit-Log)
Das Protokoll zeichnet jede sicherheitsrelevante oder datenmutierend Aktion im System auf und kann nicht gelöscht werden.
| Element | Beschreibung |
|---|---|
| Zeitstempel | Datum und Uhrzeit des Ereignisses (Zeitzone: Europe/Berlin). |
| Admin | Benutzername des auslösenden Admins. „System" bei automatisch ausgelösten Aktionen. |
| Aktion | Art des Ereignisses, z. B. login, event_created, registration_deleted. |
| Details | Zusätzliche Kontextinformationen, z. B. der Name der geänderten Veranstaltung. |
| IP-Adresse | Die IP des anfragenden Clients – hilfreich bei der Analyse verdächtiger Aktionen. |
| Filter | Die Tabelle kann nach Aktion, Admin und Zeitraum gefiltert werden. Alle Filter lassen sich einzeln zurücksetzen. |
Administratoren
Hier verwalten Sie Admin-Nutzer, deren Berechtigungen und Kontosperren.
| Funktion | Beschreibung |
|---|---|
| Admin anlegen | Erstellt einen neuen Admin-Account mit Benutzername, E-Mail-Adresse und Passwort. Das Passwort wird gehasht gespeichert (bcrypt). |
| Passwort ändern | Setzt das Passwort eines Admins zurück. Nur Superadmins können Passwörter anderer Admins ändern. |
| Superadmin-Flag | Superadmins haben vollen Zugriff auf alle Funktionen und können andere Admins verwalten. Darf nur sparsam vergeben werden. |
| Berechtigungsgruppen | Admins können einer Gruppe zugewiesen werden, die granulare Rechte definiert (z. B. nur Lesezugriff auf Anmeldungen). Gruppen werden im versteckten Bereich Gruppen verwaltet. |
| Kontosperren aufheben | Nach zu vielen fehlgeschlagenen Anmeldeversuchen wird ein Account gesperrt. Superadmins können die Sperre hier manuell aufheben. |
| Admin löschen | Entfernt den Account dauerhaft. Der eigene Account kann nicht gelöscht werden. |
Einstellungen
Die Einstellungen steuern den Zugang zur Besucherseite, E-Mail-Versand und Datenschutzfunktionen.
| Einstellung | Beschreibung |
|---|---|
| Besucher-Passwort | Schützt die öffentliche Seite mit einem Passwort. Geben Sie dieses Passwort an Ihre Mitglieder weiter. Optional kann ein Ablaufdatum gesetzt werden – danach ist das Passwort ungültig, und Besucher erhalten eine Fehlermeldung. Ein Ablaufhinweis erscheint in der Admin-Oberfläche. |
| Abmeldeanfragen | Aktiviert oder deaktiviert den Abmeldebutton auf der Besucherseite. Bei aktivierten Anfragen werden Abmeldungen nicht automatisch verarbeitet – ein Admin muss jede Anfrage manuell bestätigen oder ablehnen (siehe Bereich Anmeldungen). Ein roter Badge in der Navigation zeigt unbearbeitete Anfragen an. |
| SMTP-E-Mail | Konfiguriert den ausgehenden E-Mail-Versand für Anmeldebestätigungen. Benötigt werden: SMTP-Server, Port (typisch 465 für SSL, 587 für STARTTLS), Benutzername und Passwort. Die Zugangsdaten selbst sind in der Datei config.php hinterlegt. Über Test-E-Mail senden können Sie den Versand prüfen. E-Mail-Versand kann hier zentral aktiviert/deaktiviert werden. |
| DSGVO-Datenauszug | Erstellt gemäß Art. 15 DSGVO auf Anfrage einen vollständigen Auszug aller gespeicherten Daten zu einer bestimmten E-Mail-Adresse. Geben Sie die Adresse ein und klicken Sie auf Auszug – der Export wird als Download bereitgestellt. |
API
Im Bereich API können externe Anwendungen (z. B. die Vereins-Website oder eine App) Veranstaltungen abrufen und Anmeldungen erstellen – ganz ohne Besucher-Login.
| Funktion | Beschreibung |
|---|---|
| API-Schlüssel erstellen | Erzeugt einen neuen Schlüssel mit frei wählbarer Bezeichnung. Der Klartext-Schlüssel wird nur direkt nach der Erstellung angezeigt – notieren Sie ihn sofort sicher. |
| Widerrufen / Reaktivieren | Sperrt einen Schlüssel temporär (z. B. bei Verdacht auf Missbrauch), ohne ihn zu löschen. Ein widerrufener Schlüssel kann jederzeit wieder aktiviert werden. |
| Löschen | Entfernt den Schlüssel endgültig. Anwendungen, die ihn verwenden, verlieren sofort den Zugriff. |
| Dokumentation | Beschreibt die verfügbaren Endpunkte (Veranstaltungen abrufen, Anmeldung erstellen), die Authentifizierung per X-API-Key-Header sowie Beispiel-Requests und -Antworten. |
Sicherheitshinweise & Best Practices
- Starke Passwörter: Verwenden Sie mindestens 12 Zeichen mit Groß-/Kleinbuchstaben, Ziffern und Sonderzeichen für Admin-Accounts und das Besucher-Passwort.
- Superadmin sparsam vergeben: Nur vertrauenswürdige Personen sollten Superadmin-Rechte erhalten. Normale Admins können auf einzelne Bereiche beschränkt werden.
- Regelmäßige Protokoll-Kontrolle: Prüfen Sie das Protokoll in regelmäßigen Abständen auf unerwartete Logins oder Änderungen.
- SMTP-Zugangsdaten schützen: Die SMTP-Zugangsdaten und Datenbankpasswörter befinden sich in
config.php. Diese Datei darf niemals öffentlich zugänglich sein – stellen Sie sicher, dass der Webserver keinen direkten Zugriff erlaubt (.htaccess-Schutz). - Besucher-Passwort regelmäßig wechseln: Insbesondere nach Mitgliederaustritt sollte das Besucher-Passwort erneuert werden.
- DSGVO: Speichern Sie personenbezogene Daten (Name, E-Mail) nur solange sie benötigt werden. Nutzen Sie die Lösch- und Export-Funktionen bei Auskunftsersuchen.
- Bug melden: Über die Schaltfläche Bug melden in der oberen Leiste können Fehler direkt an den Entwickler gemeldet werden.