Files
tsv08kulmbach-website/app/pages/datenschutz.php
fs a101b0c3ec Stadionzeitung, Veranstaltungen, News-Artikel, Lightbox und Anzeigen-Verteilung
Stadionzeitung: Live-Seiten (Tabellen, Ergebnisse, Vorschau, Termine, News,
Kontakt, Historie, Sportheim, Partner, Momente, Impressum), automatisches Cover,
Swipe-Viewer mit Vollbildmodus und die Druckfassung als Falt-Heft. Anzeigen
kommen jetzt aus dem Bestand und werden gleichmäßig verteilt, nie mehr als zwei
hintereinander (vorher vier Blöcke à fünf). Die Doppelseiten-Regel rechnet das
Skript selbst, statt sie von Hand zu prüfen.

Veranstaltungen: Bereich /veranstaltungen mit Detailseite pro Fest, Lebenszyklus
über das Datum (Ankündigung vor dem Fest, Rückblick danach), Galerie mit
Lightbox. veranstaltungen.json ist dritte Termin-Quelle, damit ein Fest nie
doppelt gepflegt wird.

News-Artikel als dritte dynamische Prefix-Route, gemeinsamer detail-head.

Behobene Fehler:
- Wappen-Kontexte setzten Zeilen-Layout auf .crest statt auf die Zeile; das
  Wappen wurde zum Grid, Vereinsname und Tore rutschten darunter zusammen
  (Ergebnis-Rückblick, Vorschau, Cover).
- --header-h (60px) unterschätzt die Kopfleiste um 32px (Logo 72px + 20px
  Versatz): neues abgeleitetes --header-space, sonst klebten Zurück-Links
  unter dem Logo.
- base_url in der Produktions-Config ohne www, während .htaccess auf www
  umleitet; preflight prüft das jetzt.
- .lightbox brauchte display:none mit (0,2,0), sonst lag das Overlay offen.

Neue Werkzeuge: bin/anzeige-add.php (Anzeigen-Bestand), bin/veranstaltung-bilder.php
(Plakate und Galerien, Alt-Texte folgen der Quelldatei), bin/qr.php (Druck-QR mit
Warnung, wenn base_url nicht auf die echte Domain zeigt).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
2026-07-31 14:55:27 +02:00

342 lines
21 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
/**
* Datenschutzerklärung — zugeschnitten auf den tatsächlichen Stack:
* komplett self-hosted, keine Tracker/Analyse/Werbe-Dienste, keine externen
* Fonts/Maps/Embeds. Einzige Verarbeitungen: Server-Logs (Hoster), die vier
* Formulare (Kontakt, Turnabteilung, Mitgliedsantrag, Sportheimbuchung; Versand
* über den All-Inkl-Mailserver, also derselbe Auftragsverarbeiter wie beim
* Hosting), server-seitig gecachter Instagram-Feed (Bilder von unserer Domain).
* Vereinsdaten aus club.json.
*
* Alle Empfänger liegen auf unserer eigenen Domain bei All-Inkl (info@,
* turnen@) — deshalb stimmt die Aussage weiter unten, dass kein zusätzlicher
* E-Mail-Dienstleister im Spiel ist. Zeigt ein Postfach künftig auf einen
* fremden Anbieter, muss dieser Satz mit.
*/
$club = json_load('club');
$addr = $club['address'] ?? [];
$dpo = $club['data_protection_contact'] ?? '';
$meta = [
'title' => 'Datenschutzerklärung',
'description' => 'Datenschutzerklärung des TSV 1908 Kulmbach e. V. welche Daten beim Besuch der Website verarbeitet werden. Self-hosted, ohne Tracking und Drittanbieter.',
'schema' => page_schema([
['name' => 'Startseite', 'slug' => ''],
['name' => 'Datenschutz', 'slug' => 'datenschutz'],
]),
];
?>
<section class="section legal">
<div class="container">
<div class="legal__head">
<p class="legal__kicker">Rechtliches</p>
<h1>Datenschutzerklärung</h1>
<p class="legal__lead">
Der Schutz deiner persönlichen Daten ist uns wichtig. Diese Website ist
bewusst datensparsam gebaut: Sie lädt keine externen Schriften, Karten,
Skripte oder Tracking-Dienste dein Browser kontaktiert ausschließlich
unseren eigenen Server.
</p>
</div>
<div class="legal__body prose">
<section>
<h2>Verantwortlicher</h2>
<p>Verantwortlich für die Datenverarbeitung auf dieser Website ist:</p>
<div class="legal__card">
<address>
<strong><?= e($club['legal_name']) ?></strong><br>
<?= e($addr['street']) ?><br>
<?= e($addr['zip']) ?> <?= e($addr['city']) ?><br>
<br>
E-Mail: <a href="mailto:<?= e($club['email']) ?>"><?= e($club['email']) ?></a>
</address>
</div>
<?php if ($dpo !== ''): ?>
<p class="legal__muted">
Ansprechpartner für Fragen zum Datenschutz: <?= e($dpo) ?>,
erreichbar unter <a href="mailto:<?= e($club['email']) ?>"><?= e($club['email']) ?></a>.
</p>
<?php endif; ?>
</section>
<section>
<h2>Grundsätzliches</h2>
<p>
Wir verarbeiten personenbezogene Daten nur im Rahmen der geltenden
Datenschutzgesetze, insbesondere der Datenschutz-Grundverordnung (DSGVO)
und des Bundesdatenschutzgesetzes (BDSG). „Personenbezogene Daten“ sind
alle Informationen, die sich auf eine identifizierte oder identifizierbare
Person beziehen. Eine Nutzung unserer Website ist grundsätzlich ohne Angabe
personenbezogener Daten möglich.
</p>
</section>
<section>
<h2>Aufruf der Website &amp; Server-Logfiles</h2>
<p>
Unsere Website wird bei folgendem Dienstleister gehostet:
</p>
<div class="legal__card">
<address>
<strong>ALL-INKL.COM Neue Medien Münnich</strong><br>
Inhaber: René Münnich<br>
Hauptstraße 68<br>
02742 Friedersdorf
</address>
</div>
<p>
Bei jedem Aufruf unserer Website werden durch unseren Webhoster automatisch
Informationen erfasst, die dein Browser übermittelt und die technisch
erforderlich sind, um die Seite auszuliefern. Erfasst werden:
</p>
<ul>
<li>die aufgerufene Adresse (URL) und die zuvor besuchte Seite (Referrer)</li>
<li>Datum und Uhrzeit des Zugriffs</li>
<li>verwendeter Browser und Betriebssystem</li>
<li>die IP-Adresse des anfragenden Geräts</li>
</ul>
<p>
Diese Daten dienen ausschließlich dem technischen Betrieb, der Sicherheit
und der Stabilität der Website und werden nicht mit anderen Datenquellen
zusammengeführt. Rechtsgrundlage ist unser berechtigtes Interesse an einer
sicheren und funktionsfähigen Website (Art. 6 Abs. 1 lit. f DSGVO). Die
Logdaten werden nach kurzer Zeit automatisch gelöscht.
</p>
<p class="legal__muted">
Unser Webhoster verarbeitet diese Daten in unserem Auftrag auf Grundlage
eines Vertrags zur Auftragsverarbeitung (Art. 28 DSGVO).
</p>
</section>
<section>
<h2>Verschlüsselung (SSL/TLS)</h2>
<p>
Diese Website nutzt aus Sicherheitsgründen eine SSL- bzw. TLS-Verschlüsselung.
Eine verschlüsselte Verbindung erkennst du am „https://“ in der Adresszeile
deines Browsers. Daten, die du an uns übermittelst, können dadurch nicht ohne
Weiteres von Dritten mitgelesen werden.
</p>
</section>
<section>
<h2>Cookies</h2>
<p>
Diese Website setzt <strong>keine Cookies zu Analyse-, Marketing- oder
Tracking-Zwecken</strong> und bindet keine Dienste ein, die solche Cookies
setzen würden. Aus diesem Grund benötigen wir auch kein Cookie-Banner.
</p>
<p>
Eine Ausnahme betrifft nur den passwortgeschützten internen Bereich
(siehe „Interne Dateiablage“): Wer sich dort anmeldet, erhält ein
technisch notwendiges Sitzungs-Cookie, das die Anmeldung für die Dauer
der Sitzung merkt. Ohne dieses Cookie ist eine Anmeldung nicht möglich.
</p>
</section>
<section>
<h2>Formulare &amp; Kontaktaufnahme</h2>
<p>
Wenn du uns über eines unserer Formulare oder per E-Mail kontaktierst,
verarbeiten wir die von dir angegebenen Daten, um deine Anfrage zu bearbeiten.
Über das <strong>Kontaktformular</strong> sind das:
</p>
<ul>
<li>Name (Pflichtangabe)</li>
<li>E-Mail-Adresse (Pflichtangabe)</li>
<li>Telefonnummer (freiwillig)</li>
<li>dein Interessensgebiet, Betreff und deine Nachricht</li>
</ul>
<p>
Über den <strong>Mitgliedsantrag</strong> verarbeiten wir zusätzlich Vorname,
Nachname, Geburtsdatum, Anschrift und die gewählte Beitragsklasse. Diese Angaben
brauchen wir, um die Mitgliedschaft vorzubereiten; die Beitrittserklärung senden
wir dir anschließend per Post zu. Bankdaten erheben wir online bewusst nicht.
Rechtsgrundlage ist hier Art. 6 Abs. 1 lit. b DSGVO (Anbahnung und Durchführung
der Mitgliedschaft). An die von dir angegebene Adresse senden wir außerdem eine
Eingangsbestätigung.
</p>
<p>
Über das Formular <strong>Sportheimbuchung</strong> verarbeiten wir Name,
E-Mail-Adresse, optional die Telefonnummer sowie Art, Datum und Personenzahl
deiner Veranstaltung, um dir ein Angebot machen zu können.
</p>
<p>
Das <strong>Anfrageformular der Turnabteilung</strong> auf
<a href="<?= e(url('turnen')) ?>">/turnen</a> erhebt dieselben Angaben wie das
Kontaktformular, statt eines Betreffs jedoch die Turngruppe, für die du dich
interessierst; eine Nachricht ist dort freiwillig. Diese Anfragen gehen an das
Postfach der Turnabteilung
(<a href="mailto:<?= e($club['email_turnen']) ?>"><?= e($club['email_turnen']) ?></a>),
weil die Abteilung sie selbst beantwortet.
</p>
<p>
Rechtsgrundlage ist deine Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die du
mit dem Absenden erteilst, sowie unser berechtigtes Interesse bzw. die
Anbahnung eines (Mitgliedschafts-)Verhältnisses an der Beantwortung deiner
Anfrage (Art. 6 Abs. 1 lit. f und b DSGVO). Die Daten werden gespeichert, bis
deine Anfrage abschließend bearbeitet ist und keine gesetzlichen
Aufbewahrungspflichten entgegenstehen.
</p>
<p>
Schickst du uns Material für unsere <strong>Vereinshistorie</strong> Fotos,
Zeitungsausschnitte, Dokumente oder Erinnerungen an
<a href="mailto:<?= e($club['email_historie']) ?>"><?= e($club['email_historie']) ?></a>,
bewahren wir es gemeinsam mit deinem Namen als Quellenangabe in unserem
Vereinsarchiv auf. Grundlage dafür ist unser berechtigtes Interesse an der
Dokumentation der Vereinsgeschichte (Art. 6 Abs. 1 lit. f DSGVO).
Veröffentlichen auf dieser Website, in einer Chronik oder Festschrift
tun wir nur, was du uns ausdrücklich freigegeben hast (Art. 6 Abs. 1 lit. a
DSGVO); diese Freigabe kannst du jederzeit widerrufen. Sind auf Bildern
weitere Personen erkennbar, sag uns bitte, was du darüber weißt.
</p>
<p>
Der technische Versand der Formular-Nachrichten als E-Mail läuft über den
Mailserver unseres Webhosters ALL-INKL.COM (siehe oben) — die Daten bleiben
damit innerhalb der dort genannten Auftragsverarbeitung. Die Übertragung zum
Mailserver ist verschlüsselt (STARTTLS). Einen zusätzlichen
E-Mail-Dienstleister setzen wir nicht ein.
</p>
<p class="legal__muted">
Hinweis: Zum Schutz vor automatisiertem Spam verwenden wir ein verstecktes
Pflichtfeld und einen signierten Zeitstempel. Außerdem begrenzen wir, wie oft
von einem Anschluss abgesendet werden kann. Dafür speichern wir deine
IP-Adresse nicht im Klartext, sondern nur als Hashwert, der mit einem
geheimen Schlüssel gebildet wird; die Zähler werden spätestens nach 24 Stunden
gelöscht. Externe Dienste (z.&nbsp;B. reCAPTCHA) binden wir nicht ein.
</p>
</section>
<section>
<h2>Interne Dateiablage</h2>
<p>
Unter <code>/dateien</code> betreiben wir einen
<strong>passwortgeschützten Bereich</strong>, in dem Mitglieder Fotos und
Videos von Vereinsveranstaltungen für die Website abliefern können. Er ist
nicht öffentlich, nicht verlinkt und von Suchmaschinen ausgenommen; die
Zugangsdaten geben wir nur intern weiter.
</p>
<p>
Verarbeitet werden dort ausschließlich die hochgeladenen Dateien selbst
(einschließlich der darin enthaltenen Aufnahmen von Personen und der
technischen Bilddaten wie Aufnahmezeit oder Kameramodell) sowie der
gewählte Benutzername mit dem Zeitpunkt der Anmeldung. Fehlgeschlagene
Anmeldeversuche halten wir zum Schutz gegen automatisierte Angriffe kurz
fest, dabei die IP-Adresse nur als nicht zurückrechenbare Prüfsumme.
</p>
<p>
Die Dateien liegen ausschließlich auf unserem eigenen Webspace, außerhalb
des öffentlich erreichbaren Bereichs, und werden nicht an Dritte
weitergegeben. Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO
(berechtigtes Interesse an der Vereinskommunikation); für die
Veröffentlichung von Personenaufnahmen auf der Website gilt zusätzlich der
Abschnitt „Foto- und Videoaufnahmen“. Wer nicht möchte, dass eine Aufnahme
von ihm dort abgelegt oder veröffentlicht wird, kann sich jederzeit an die
oben genannten Kontaktdaten wenden wir löschen sie dann.
</p>
</section>
<section>
<h2>Keine Analyse-, Tracking- oder Werbedienste</h2>
<p>
Wir verzichten bewusst vollständig auf Dienste, die dein Verhalten
auswerten oder Daten an Dritte weitergeben. Insbesondere setzen wir
<strong>nicht</strong> ein:
</p>
<ul>
<li>keine Webanalyse (z.&nbsp;B. Google Analytics, Matomo, Hotjar)</li>
<li>keine externen Schriftarten alle Fonts liegen auf unserem Server</li>
<li>keine eingebetteten Karten (z.&nbsp;B. Google Maps) und keine Video-Embeds</li>
<li>keine Social-Media-Plugins, „Like“-Buttons oder Tracking-Pixel</li>
<li>keine Werbenetzwerke oder Conversion-Tracking</li>
</ul>
</section>
<section>
<h2>Instagram-Inhalte auf dieser Website</h2>
<p>
Auf unserer Website zeigen wir aktuelle Beiträge unseres öffentlichen
Instagram-Profils. Diese Inhalte werden <strong>nicht</strong> über ein
Instagram-Plugin oder einen externen Einbettungscode geladen. Stattdessen
rufen wir die Beiträge in regelmäßigen Abständen serverseitig ab, speichern
sie auf unserem eigenen Server und liefern Bilder und Texte ausschließlich von
unserer Domain aus. Beim Ansehen unserer Website wird dadurch
<strong>keine Verbindung zu Instagram oder Meta hergestellt</strong> und es
werden keine Daten an diese Anbieter übertragen. Erst wenn du aktiv einen
Link zu Instagram anklickst, verlässt du unsere Website (siehe nächster
Abschnitt).
</p>
</section>
<section>
<h2>Externe Links &amp; Social Media</h2>
<p>
Unsere Website enthält Links zu externen Angeboten, etwa zu unseren Profilen
bei Instagram und Facebook oder zu einer Routenplanung über Google Maps. Wenn
du einen solchen Link anklickst, verlässt du unsere Website und es gelten die
Datenschutzbestimmungen des jeweiligen Anbieters. Auf deren Datenverarbeitung
haben wir keinen Einfluss.
</p>
</section>
<section>
<h2>Foto- und Videoaufnahmen</h2>
<p>
Im Rahmen unseres Vereinslebens, von Spielen und Veranstaltungen entstehen
Foto- und Videoaufnahmen, die wir zur Darstellung des Vereins auf dieser
Website, in unseren Social-Media-Kanälen und in Printmedien verwenden. Die
Veröffentlichung erfolgt auf Grundlage einer Einwilligung
(Art. 6 Abs. 1 lit. a DSGVO) bzw. unseres berechtigten Interesses an der
Vereinsöffentlichkeitsarbeit (Art. 6 Abs. 1 lit. f DSGVO). Wenn du mit der
Veröffentlichung einer dich zeigenden Aufnahme nicht einverstanden bist,
genügt eine formlose Nachricht an
<a href="mailto:<?= e($club['email']) ?>"><?= e($club['email']) ?></a> wir
entfernen die entsprechende Aufnahme dann zeitnah.
</p>
</section>
<section>
<h2>Deine Rechte</h2>
<p>Dir stehen hinsichtlich deiner personenbezogenen Daten folgende Rechte zu:</p>
<ul>
<li>Recht auf Auskunft (Art. 15 DSGVO)</li>
<li>Recht auf Berichtigung (Art. 16 DSGVO)</li>
<li>Recht auf Löschung (Art. 17 DSGVO)</li>
<li>Recht auf Einschränkung der Verarbeitung (Art. 18 DSGVO)</li>
<li>Recht auf Datenübertragbarkeit (Art. 20 DSGVO)</li>
<li>Recht auf Widerspruch gegen die Verarbeitung (Art. 21 DSGVO)</li>
</ul>
<p>
Eine erteilte Einwilligung kannst du jederzeit mit Wirkung für die Zukunft
widerrufen. Zur Ausübung deiner Rechte genügt eine Nachricht an die oben
genannten Kontaktdaten.
</p>
<p>
Außerdem hast du das Recht, dich bei einer Datenschutz-Aufsichtsbehörde zu
beschweren. Die für uns zuständige Behörde ist:
</p>
<div class="legal__card">
<address>
<strong>Bayerisches Landesamt für Datenschutzaufsicht (BayLDA)</strong><br>
Promenade 18<br>
91522 Ansbach
</address>
</div>
</section>
<section>
<h2>Aktualität dieser Datenschutzerklärung</h2>
<p class="legal__muted">
Stand: <?= e(date('m/Y')) ?>. Durch die Weiterentwicklung unserer Website
oder geänderte gesetzliche Vorgaben kann es nötig werden, diese
Datenschutzerklärung anzupassen. Es gilt jeweils die hier veröffentlichte
aktuelle Fassung.
</p>
</section>
</div>
</div>
</section>