> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Prüfungen von Adressdaten festlegen

> Wie Sie in WEBSALE V8s je Adressfeld eigene Prüfungen und Pflichtfelder festlegen, Fehlermeldungen hinterlegen und unerwünschte Zeichen automatisch entfernen lassen.

Die Prüfung von Kundendaten deckt die Fälle ab, die WEBSALE V8s selbst beurteilen kann: Bankleitzahl, Postleitzahl, Kreditkartennummer. Was Ihr Warenwirtschaftssystem darüber hinaus erwartet, weiß nur Ihr Haus.

Mit den Prüfungen von Adressdaten legen Sie das selbst fest, Feld für Feld: welche Angaben Pflicht sind, wie lang sie sein dürfen, aus welchen Zeichen sie bestehen dürfen und welche Zeichen der Shop stillschweigend entfernt. Das senkt den Klärungsaufwand, bevor eine Bestellung überhaupt entsteht.

Wegweiser: [Prüfung von Kundendaten festlegen](https://dokumentation.websale.de/v8s/adressdaten/pruefung-von-kundendaten-festlegen.md)

Alle Einstellungen stehen in der `shop.config` im Abschnitt `<InputCheck>`.

## Wie die Prüfungen arbeiten

Je Adressfeld dürfen Sie beliebig viele Prüfungen festlegen. Drei Regeln bestimmen, was daraus wird:

* Die Prüfungen laufen in der Reihenfolge, in der sie in der `shop.config` stehen.
* Schlägt eine fehl, bricht der Shop für dieses Feld ab. Die folgenden Prüfungen laufen nicht mehr.
* Die Eingabe gilt erst als gültig, wenn sie alle Prüfungen bestanden hat.

Aus dem Abbruch beim ersten Fehler folgt eine Reihenfolge, die sich lohnt: erst „ist überhaupt etwas da", dann „ist es nicht zu lang", dann „besteht es aus erlaubten Zeichen". So bekommt der Käufer die Meldung, die seinem eigentlichen Problem am nächsten kommt.

## Fehlermeldungen hinterlegen

Fehlermeldungen definieren Sie einmal zentral und beziehen sich in den Prüfungen über ihre ID darauf.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<InputCheck>
   <ErrorMessages>
      Default      = ~FieldName~: Ungültige Eingabe
      emptyerror   = Bitte füllen Sie das Feld ~FieldName~ aus.
      toolongerror = Ihre Eingabe im Feld ~FieldName~ ist zu lang. Bitte kürzen Sie sie.
      numbererror  = ~FieldName~: Bitte geben Sie eine Ziffer ein.
      street2error = ~FieldName~: Bitte geben Sie eine korrekte Hausnummer an.
      emailwrong   = Die angegebene E-Mail-Adresse ist ungültig.
      dateerror    = ~FieldName~: Ungültiges Datum. Bitte geben Sie ein korrektes Datum ein.
   </ErrorMessages>
</InputCheck>
```

Der Platzhalter `~FieldName~` setzt die Beschriftung des betroffenen Feldes ein. Deshalb taugt dieselbe Meldung für viele Felder.

Die ID `Default` ist die Rückfallebene. Sie greift, wenn eine Prüfung keine `ErrorMessageID` nennt oder die genannte ID nicht existiert. Legen Sie sie auf jeden Fall an, sonst steht im Fehlerfall womöglich gar nichts da.

## Zeichen automatisch entfernen

Manche Zeichen will Ihr weiterverarbeitendes System schlicht nicht sehen. Statt den Käufer damit zu behelligen, entfernt der Shop sie selbst.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<InputCheck>
   <InputCheckDefaults>
      RemoveSigns = "$"
   </InputCheckDefaults>
</InputCheck>
```

> [!WARNING]
>
> Gibt eine einzelne Prüfung ihrerseits `RemoveSigns` an, **ersetzt** das die Standardbehandlung vollständig, es ergänzt sie nicht. Sollen die Standardzeichen weiterhin entfernt werden, müssen Sie sie dort wiederholen. Aus `RemoveSigns = "$"` im Standard und einem gewünschten zusätzlichen Leerzeichen wird also `RemoveSigns = "$ "`, nicht `RemoveSigns = " "`.

Die Standardbehandlung greift nur für Felder, für die überhaupt eine Prüfung eingetragen ist. Ein Feld ganz ohne `<+InputCheck>` bleibt unangetastet. Wollen Sie die Zeichenentfernung überall, legen Sie eine Prüfung mit `AddressField = *` und `Type = nocheck` an.

## Eine Prüfung definieren

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField   = Street2
   AddressType    = bill
   Type           = maxlen
   Len            = 10
   ErrorMessageID = toolongerror
</+InputCheck>
```

| Parameter | Bedeutung |
| - | - |
| `AddressField` | technischer Feldname, mehrere durch Komma getrennt, `*` für alle Felder |
| `AddressType` | `bill`, `delivery` oder weglassen für beide Adressarten |
| `Type` | die Prüfart, siehe unten |
| `ErrorMessageID` | ID der Meldung aus `<ErrorMessages>`, weglassen führt zu `Default` |
| `RemoveSigns` | Zeichen, die vor der Prüfung entfernt werden, ersetzt die Standardbehandlung |

Je nach Prüfart kommen weitere Parameter hinzu:

| Prüfart | Zusätzliche Parameter |
| - | - |
| `minlen`, `maxlen` | `Len` |
| `legalsigns` | `Signs` |
| `date` | `DateFormat`, `Delimiter`, `FormatLeadingZero` |

### Die wichtigsten Prüfarten

| `Type` | Prüft |
| - | - |
| `minlen` | Mindestlänge. Mit `Len = 1` machen Sie ein Feld zum Pflichtfeld |
| `maxlen` | Höchstlänge |
| `legalsigns` | ob die Eingabe ausschließlich aus den in `Signs` erlaubten Zeichen besteht |
| `number` | ob die Eingabe eine Zahl ist |
| `email` | ob die Eingabe syntaktisch eine E-Mail-Adresse ist |
| `date` | ob die Eingabe ein gültiges Datum im festgelegten Format ist |
| `taxid` | ob die Eingabe eine Umsatzsteuer-Identifikationsnummer sein kann |
| `nocheck` | gar nichts. Nur die Zeichenentfernung läuft |

Der Shop kennt darüber hinaus weitere Prüfarten, unter anderem für reguläre Ausdrücke, Telefonnummern, Postleitzahlen, verbotene statt erlaubte Zeichen sowie Ausweis- und Altersprüfungen. Die vollständige Liste steht auf der Referenzseite. Kommen Sie damit für eine Anforderung nicht aus, sprechen Sie die WEBSALE AG an.

Für `legalsigns` gibt es zwei Abkürzungen: `$ALPHA` steht für alle Buchstaben des ASCII-Zeichensatzes, `$NUM` für alle Ziffern.

> [!WARNING]
>
> Sprachspezifische Sonderzeichen sind in `$ALPHA` **nicht** enthalten. Umlaute, das ß und der Bindestrich in Doppelnamen müssen einzeln aufgeführt werden, sonst scheitert jeder Käufer, der Müller-Lüdenscheidt heißt.

Referenz: [Abschnitt InputCheck](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#inputcheck)

## Beispiele

### Pflichtfelder in einem Zug

Eine Prüfung genügt für beliebig viele Felder, solange die Regel dieselbe ist.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField   = FirstName,LastName,Street1,Street2,Country,Zip,City
   Type           = minlen
   Len            = 1
   ErrorMessageID = emptyerror
</+InputCheck>
```

Ohne `AddressType` gilt die Prüfung für Rechnungs- **und** Lieferadresse.

### Namen mit Umlauten und Bindestrich

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField   = FirstName,LastName
   Type           = legalsigns
   Signs          = "$ALPHAß- äÄüÜöÖ"
   ErrorMessageID = Default
</+InputCheck>
```

### Hausnummer: drei Prüfungen hintereinander

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField   = Street2
   Type           = minlen
   Len            = 1
   ErrorMessageID = emptyerror
</+InputCheck>

<+InputCheck>
   AddressField   = Street2
   Type           = maxlen
   Len            = 10
   ErrorMessageID = toolongerror
</+InputCheck>

<+InputCheck>
   AddressField   = Street2
   Type           = legalsigns
   Signs          = "$ALPHA$NUM"
   RemoveSigns    = "$ "
   ErrorMessageID = street2error
</+InputCheck>
```

Die dritte Prüfung erlaubt nur Buchstaben und Ziffern. Leerzeichen werden vorher entfernt, das Dollarzeichen muss wiederholt werden, weil `RemoveSigns` die Standardbehandlung ersetzt.

### E-Mail-Adresse, aber nur bei der Rechnungsadresse

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField   = E-Mail
   AddressType    = bill
   Type           = email
   ErrorMessageID = emailwrong
</+InputCheck>
```

Das Feld ist damit kein Pflichtfeld. Wird es ausgefüllt, muss die Adresse aber syntaktisch stimmen. Für die Pflicht brauchen Sie zusätzlich eine `minlen`-Prüfung.

### Ein Datum im deutschen Format

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField      = Suffix7
   AddressType       = bill
   Type              = date
   DateFormat        = DMY
   Delimiter         = .
   FormatLeadingZero = yes
   ErrorMessageID    = dateerror
</+InputCheck>
```

`DateFormat` legt die Reihenfolge fest, `Delimiter` das Trennzeichen. `FormatLeadingZero = yes` wandelt die Eingabe in eine Schreibweise mit führenden Nullen um, sodass aus „1.5.2026" ein „01.05.2026" wird.

### Nur Zeichen entfernen, nicht prüfen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField = Suffix1
   AddressType  = bill
   Type         = nocheck
   RemoveSigns  = "$<>"
</+InputCheck>
```

Sinnvoll für Felder, deren Inhalt Sie nicht beurteilen können, bei denen Sie aber sicherstellen wollen, dass keine spitzen Klammern in Ihr Warenwirtschaftssystem wandern.

### Zeichenentfernung für alle Felder

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField = *
   Type         = nocheck
</+InputCheck>
```

Das ist der bequemste Weg, die Standardbehandlung aus `<InputCheckDefaults>` flächendeckend greifen zu lassen.

Ein technischer Feldname kann bei Rechnungs- und Lieferadresse Unterschiedliches bedeuten. `Suffix1` mag in der Lieferadresse die Packstationsnummer aufnehmen und in der Rechnungsadresse etwas ganz anderes. Setzen Sie in solchen Fällen unbedingt `AddressType`, sonst greift die Prüfung auf beiden Seiten.

## Fehlermeldung im Template positionieren

Die Meldung zu einem Feld geben Sie mit dem Tag `_errormessage` aus, also genau dort, wo sie hingehört.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{A-Company_errormessage}
   <p class="errormessage">~A-Company_errormessage~</p>
{/A-Company_errormessage}
```

Für die Lieferadresse gilt dasselbe mit dem Präfix `D-`, beispielsweise `D-Suffix1_errormessage`.

Referenz: [Tags für multiple Adressen](https://dokumentation.websale.de/v8s/referenz/tags/multiple-adressen.md)

## Verwandte Themen

* Wegweiser: [Prüfung von Kundendaten festlegen](https://dokumentation.websale.de/v8s/adressdaten/pruefung-von-kundendaten-festlegen.md)
* Wegweiser: [Einstellungen für Rechnungs- und Lieferadressen festlegen, für die Eingabelängen](https://dokumentation.websale.de/v8s/adressdaten/einstellungen-fuer-rechnungs-und-lieferadressen-festlegen.md)
* Wegweiser: [USt-IdNr. abfragen](https://dokumentation.websale.de/v8s/adressdaten/ust-idnr-abfragen.md)
* Wegweiser: [Prüfung der Ausweisnummer und Altersnachweis](https://dokumentation.websale.de/v8s/adressdaten/pruefung-der-ausweisnummer-und-altersnachweis.md)


## Related topics

- [Vom Käufer nicht änderbare Kundendaten festlegen](https://dokumentation.websale.de/v8s/adressdaten/vom-kaeufer-nicht-aenderbare-kundendaten-festlegen.md)
- [Weitere Informationen zur Bestellung abfragen](https://dokumentation.websale.de/v8s/adressdaten/weitere-informationen-zur-bestellung-abfragen.md)
- [Prüfung der Ausweisnummer und Altersnachweis](https://dokumentation.websale.de/v8s/adressdaten/pruefung-der-ausweisnummer-und-altersnachweis.md)
- [Auswahl zwischen Privat- und Geschäftsadresse](https://dokumentation.websale.de/v8s/adressdaten/auswahl-zwischen-privat-und-geschaeftsadresse.md)
- [Auswahl zwischen postalischer Lieferadresse und Packstation](https://dokumentation.websale.de/v8s/adressdaten/auswahl-zwischen-postalischer-lieferadresse-und-packstation.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.