Was macht captureBarriereFrei besonders?

  • Bot-Schutz

    Zeitbasierte Analyse und Verhaltenserkennung schützen zuverlässig vor automatisierten Anfragen – ohne CAPTCHA.

  • Betreff-Routing

    Nachrichten werden anhand des gewählten Betreffs automatisch an die richtige E-Mail-Adresse weitergeleitet.

  • Eine Datei pflegen

    Routing, Empfänger und Betreff-Optionen in einer einzigen JSON-Datei verwalten – kein doppelter Konfigurationsaufwand.

  • Barrierefreiheit

    Vollständige WCAG 2.1 AA-Konformität: ARIA-Labels, Fokus-Management, Skip-Links und Screenreader-Unterstützung.

  • ES6-Module

    Saubere, modulare Architektur ohne externe Abhängigkeiten. Einfach einbinden und konfigurieren.

  • HTML-Vorlagen

    Gestalte Benachrichtigungs- und Bestätigungsmails mit HTML-Templates und dynamischen Platzhaltern.

In 7 Schritten einbinden

1 Dateien in Ihr Projekt kopieren

Laden Sie das Repository herunter und kopieren Sie die folgenden Ordner und Dateien in Ihr Webprojekt. Die Verzeichnisstruktur muss erhalten bleiben, da alle JS-Module mit relativen Pfaden importieren.

Pflichtdateien – müssen kopiert werden

assets/
├── js/
│   ├── captureBarriereFrei/     ← ganzer Ordner
│   │   ├── index.js
│   │   ├── core.js
│   │   ├── botDetection.js
│   │   ├── formProtection.js
│   │   ├── formValidation.js
│   │   ├── ui.js
│   │   ├── utils.js
│   │   └── logger.js
│   └── mailSender/              ← ganzer Ordner
│       ├── index.js
│       ├── core/
│       │   ├── MailSender.js
│       │   └── ConfigManager.js
│       └── utils/
│           ├── ajaxHandler.js
│           ├── fileValidator.js
│           ├── formUtils.js
│           └── templateEngine.js
├── php/
│   └── send_mail.php            ← serverseitiger Handler
├── config/
│   ├── config.js                ← Konfiguration (wird angepasst)
│   └── betreff-routing.json     ← Routing-Optionen (wird angepasst)
└── templates/
    ├── contact.html             ← Benachrichtigungs-Mail
    └── confirmation.html        ← Bestätigungs-Mail

Optional – nur wenn Sie die mitgelieferten Formular-Styles nutzen möchten

assets/css/form-styles.css

Nicht kopieren – nur für dieses Showcase

index.html
assets/css/style.css
assets/php/mail_diagnose.php     ← nur Debug-Tool
assets/templates/helper.js       ← kein Runtime-Code
assets/js/captureBarriereFrei/Readme.pdf
2 Scripts ins HTML einfügen

Binden Sie die beiden ES6-Module und danach config.js als gewöhnliches Script ein. Die Reihenfolge ist entscheidend: Die Module müssen geladen sein, bevor config.js ausgeführt wird.

<!-- Zuerst die Module (type="module" lädt asynchron, blockiert nicht) -->
<script type="module" src="assets/js/captureBarriereFrei/index.js"></script>
<script type="module" src="assets/js/mailSender/index.js"></script>

<!-- Danach Konfiguration und Initialisierung -->
<script src="assets/config/config.js"></script>
<script>
  document.addEventListener('DOMContentLoaded', function () {
    window.FormularKonfiguration.initialisiere();
  });
</script>

Die Module registrieren sich als window.CaptureBarriereFrei und window.MailSenderconfig.js greift darüber auf sie zu.

3 Formular vorbereiten

Jedes zu schützende Formular braucht zwei Attribute: class="protected" aktiviert den Bot-Schutz und data-template verknüpft das Formular mit einer E-Mail-Vorlage.

<form id="kontaktFormular"
      method="post"
      novalidate
      class="protected"
      data-template="kontakt"
      aria-describedby="form-feedback">

  <!-- Barrierefreies Feedback-Element (Screenreader) -->
  <div id="form-feedback" class="sr-only" aria-live="assertive"></div>

  <!-- Ihre Formularfelder ... -->

  <!-- Jedes Feld braucht label + aria-describedby auf ein Fehlerelement -->
  <div class="form-group">
    <label for="email">E-Mail</label>
    <input type="email" id="email" name="email"
           required aria-required="true" aria-invalid="false"
           aria-describedby="email-error">
    <div id="email-error" class="error-message" aria-live="polite"></div>
  </div>

  <!-- Betreff-Select: Optionen werden automatisch aus betreff-routing.json befüllt -->
  <div class="form-group">
    <label for="betreff">Betreff</label>
    <select id="betreff" name="betreff"
            required aria-required="true" aria-invalid="false"
            aria-describedby="betreff-error">
      <option value="" disabled selected>Bitte wählen …</option>
      <!-- KEINE <option>-Elemente hier eintragen – config.js füllt den Select -->
    </select>
    <div id="betreff-error" class="error-message" aria-live="polite"></div>
  </div>

</form>

Die Felder security-score, url-field und interaction-start-time werden vom Modul automatisch als versteckte Felder eingefügt – diese Namen dürfen Sie in eigenen Feldern nicht verwenden.

4 Betreff-Routing konfigurieren

Bearbeiten Sie assets/config/betreff-routing.json. Jeder Eintrag erzeugt eine Option im Betreff-Dropdown und legt fest, an welche E-Mail-Adresse Nachrichten mit diesem Betreff gehen.

[
  {
    "wert":        "support",          <!-- value-Attribut der <option> -->
    "bezeichnung": "Technischer Support", <!-- sichtbarer Label-Text -->
    "empfaenger":  "support@ihrefirma.de" <!-- Ziel-E-Mail für diesen Betreff -->
  },
  {
    "wert":        "angebot",
    "bezeichnung": "Angebotsanfrage",
    "empfaenger":  "vertrieb@ihrefirma.de"
  }
]

Der Fallback-Empfänger (wenn kein Routing-Eintrag greift) wird in config.js über EMPFAENGER_EMAIL gesetzt.

5 config.js anpassen

Öffnen Sie assets/config/config.js und passen Sie den oberen Bereich an. Den Code unterhalb des Kommentars „BITTE UNTENSTEHENDEN CODE NICHT ÄNDERN" nicht anfassen.

// Ihre Empfänger-E-Mail (Fallback, falls kein Routing greift)
const EMPFAENGER_EMAIL = 'ihre@email.de';

// Anzeigename des Absenders in der E-Mail
const ABSENDER_NAME = 'Kontaktformular Meine-Seite';

// ID Ihres Formulars (mit # davor)
const FORMULAR_ID = '#kontaktFormular';

// Formular nach erfolgreichem Absenden leeren?
const FORMULAR_ZURUECKSETZEN = true;

// Bot-Schutz aktiv? (empfohlen: true)
const BOT_SCHUTZ_AKTIVIEREN = true;

// Mindestzeit zum Ausfüllen in Sekunden (Standard: 5)
// Zu niedrig = Bots kommen durch. Zu hoch = Nutzer werden blockiert.
const MIN_AUSFUELLZEIT = 5;

// Debug-Modus: true während der Einrichtung, false in Produktion!
const DEBUGGING = false;

Den thresholdScore (Standard: 40) können Sie als optionalen Parameter in captureConfig im unteren Konfigurationsblock anpassen, falls Sie den Bot-Schutz strenger oder lockerer einstellen möchten.

6 PHP-Backend prüfen

Die Datei assets/php/send_mail.php empfängt den POST-Request und versendet die E-Mail über die PHP-Funktion mail() oder SMTP. Voraussetzungen:

  • PHP 7.4 oder neuer auf dem Server
  • Die PHP-Funktion mail() muss aktiviert und konfiguriert sein, oder ein SMTP-Plugin wie PHPMailer muss eingebunden werden
  • Der Pfad zum Endpoint in config.js stimmt: endpoint: 'assets/php/send_mail.php' – passen Sie diesen an, wenn Ihre Verzeichnisstruktur abweicht

Kopieren Sie assets/php/mail_diagnose.php temporär auf den Server und rufen Sie die Datei im Browser auf, um die Mail-Konfiguration zu prüfen. Nach der Einrichtung wieder löschen.

https://ihreseite.de/assets/php/mail_diagnose.php
7 Lokal testen

Öffnen Sie die Seite nie direkt als file://-URL – fetch()-Aufrufe für JSON und Templates werden dann vom Browser blockiert. Starten Sie stattdessen einen lokalen HTTP-Server:

# Python (im Projektordner ausführen)
python3 -m http.server 8080

# Node.js
npx serve .

# VS Code: Erweiterung "Live Server" → Rechtsklick auf index.html → "Open with Live Server"

Öffnen Sie dann http://localhost:8080 im Browser. Aktivieren Sie DEBUGGING = true in config.js, um detaillierte Konsolenmeldungen beider Module zu sehen. Für den E-Mail-Versand benötigen Sie einen echten Server mit PHP-Mail-Unterstützung.

Schreiben Sie uns

Dieses Formular nutzt captureBarriereFrei: automatischer Bot-Schutz, Betreff-Routing und Bestätigungsmail – vollständig konfiguriert über eine JSON-Datei.

  • Bot-Schutz aktiv
  • Betreff-basiertes Routing
  • Automatische Bestätigungsmail
  • WCAG 2.1 AA konform

Im Hintergrund läuft eine automatische Sicherheitsprüfung – keine CAPTCHAs, keine Tracking-Cookies.