> ## 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.

# CHECK- (URL- und Cookie-Daten)

> Die Tags für den Zugriff auf beliebige URL-Parameter und Cookies: einen Namen festlegen, prüfen ob er vorhanden ist und seinen Wert ausgeben.

Manchmal braucht ein Template eine Angabe, die der Shop von sich aus nicht kennt: eine Kampagnenkennung aus der URL, ein Merkmal aus einem Cookie, das ein Drittsystem gesetzt hat. Für diesen Fall gibt es zwei Tag-Gruppen, die beide nach demselben Muster arbeiten.

`CheckURLParam-` liest einen beliebigen Parameter aus der aufgerufenen Adresse, `CheckCookie-` ein beliebiges Cookie. Beide bestehen aus denselben drei Tags mit denselben Aufgaben.

## Das Muster in drei Schritten

| Schritt | URL-Parameter | Cookie |
| - | - | - |
| Namen festlegen | `CheckURLParam-TouchData()` | `CheckCookie-TouchData()` |
| prüfen, ob vorhanden | `CheckURLParam-DataOK` | `CheckCookie-DataOK` |
| Wert ausgeben | `CheckURLParam-Data` | `CheckCookie-Data` |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~CheckURLParam-TouchData(kampagne)~

{CheckURLParam-DataOK}
   Sie kamen über die Kampagne ~CheckURLParam-Data~.
{/CheckURLParam-DataOK}

{!CheckURLParam-DataOK}
   <!-- kein solcher Parameter in der Adresse -->
{/!CheckURLParam-DataOK}
```

> [!WARNING]
>
> Das Tag mit `TouchData` muss vor den beiden anderen stehen. Es legt fest, worauf sich `DataOK` und `Data` beziehen. Ohne es liefern die beiden nichts.
>
> Der Shop merkt sich immer nur einen Wert je Gruppe. Jedes neue `TouchData` überschreibt den vorherigen. Sie können also mehrere Parameter nacheinander auslesen, aber nicht zwei gleichzeitig vergleichen. Wenn Sie einen Wert später noch einmal brauchen, sichern Sie ihn in einem Design-Control-Tag.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~CheckURLParam-TouchData(kampagne)~
~DC-FPkampagne_set($CheckURLParam-Data$)~

~CheckURLParam-TouchData(quelle)~
~DC-FPquelle_set($CheckURLParam-Data$)~

Kampagne {DC-FPkampagne(sommer)}Sommer{/DC-FPkampagne(sommer)}
```

## Der Unterschied zwischen DataOK und Data

Beide lassen sich als Bereichs-Tag verwenden, und sie prüfen Verschiedenes.

| Tag | Greift, wenn |
| - | - |
| `…-DataOK` | der Parameter beziehungsweise das Cookie überhaupt vorhanden ist |
| `…-Data` | ein nicht leerer Wert vorliegt |

Der Unterschied zeigt sich bei einem Parameter ohne Wert. Bei der Adresse `…/?flag=` greift `CheckURLParam-DataOK`, weil der Parameter da ist. `CheckURLParam-Data` greift nicht, weil kein Wert dahintersteht. Für die Frage "wurde dieser Parameter mitgegeben" nehmen Sie deshalb `DataOK`, für "steht ein Wert darin" `Data`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~CheckURLParam-TouchData(druckansicht)~

{CheckURLParam-DataOK}
   <!-- greift auch bei ?druckansicht= ohne Wert -->
   <link rel="stylesheet" href="css/druck.css">
{/CheckURLParam-DataOK}
```

## URL-Parameter auslesen

### CheckURLParam-TouchData()

Legt fest, welcher Parameter der aufgerufenen Adresse gelesen wird. Der Name steht in den Klammern.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.ihr-shop.example/?parametername1=wert1&parametername2=wert2
```

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~CheckURLParam-TouchData(parametername2)~
```

> [!WARNING]
>
> Der Parametername wird genau so gesucht, wie Sie ihn schreiben. Groß- und Kleinschreibung zählt. Ohne Namen in den Klammern ist das Tag ungültig.

### Den Namen aus einem anderen Tag holen

`CheckURLParam-TouchData()` unterstützt Tag-in-Tag. Der Parametername kann also aus einem anderen Tag kommen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~DC-FPcheck_set(checkme)~
~CheckURLParam-TouchData($DC-FPcheck$)~
```

> [!WARNING]
>
> Diese Möglichkeit gibt es nur bei den URL-Parametern. `CheckCookie-TouchData()` wertet ein Tag in den Klammern nicht aus, dort muss der Name fest im Template stehen.

## Cookies auslesen

### CheckCookie-TouchData()

Legt fest, welches Cookie gelesen wird.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~CheckCookie-TouchData(meinCookie)~

{CheckCookie-DataOK}
   Wert: ~CheckCookie-Data~
{/CheckCookie-DataOK}

{!CheckCookie-DataOK}
   Dieses Cookie ist nicht gesetzt.
{/!CheckCookie-DataOK}
```

> [!WARNING]
>
> Der Shop sucht den Namen im Cookie-Kopf der Anfrage. Heißt ein anderes Cookie so, dass Ihr Name darin endet, kann dessen Wert gefunden werden: eine Suche nach `sitzung` findet auch `benutzersitzung`. Wählen Sie deshalb eindeutige Namen und prüfen Sie das Ergebnis, bevor Sie darauf aufbauen.

Ein Cookie, dessen Wert in Anführungszeichen steht, wird richtig erkannt. Die Anführungszeichen selbst gehören nicht zum Wert. Leerzeichen am Ende eines Wertes ohne Anführungszeichen entfernt der Shop.

> [!WARNING]
>
> Ein Cookie kommt vom Browser des Besuchers und kann dort verändert werden. Behandeln Sie den Wert wie jede andere fremde Eingabe und leiten Sie daraus keine Berechtigung ab.

## Fremde Eingaben sicher verwenden

Beide Gruppen geben Werte aus, die der Besucher selbst bestimmt. Die Adresse kann jeder ändern, das Cookie ebenso.

Für die Ausgabe im Fließtext ist das unkritisch: Der Shop gibt die Werte HTML-kodiert aus, ein eingeschleustes Element wird also als Text angezeigt und nicht ausgeführt.

> [!WARNING]
>
> In anderen Zusammenhängen reicht das nicht. Setzen Sie einen solchen Wert nie ungeprüft in ein JavaScript, in ein `href`-Attribut oder in eine Weiterleitung ein. Prüfen Sie stattdessen gegen eine feste Liste erlaubter Werte, beispielsweise mit den Design-Control-Tags.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~CheckURLParam-TouchData(ansicht)~
~DC-FPansicht_set($CheckURLParam-Data$)~

{DC-FPansicht(liste)}<!-- Listenansicht -->{/DC-FPansicht(liste)}
{DC-FPansicht(kachel)}<!-- Kachelansicht -->{/DC-FPansicht(kachel)}
```

Das ist das übliche Muster: den fremden Wert einmal einlesen, gegen die erwarteten Werte prüfen und nur danach etwas tun. Was nicht in die Liste passt, wird stillschweigend ignoriert.

Referenz: [Design Control Tags](https://dokumentation.websale.de/v8s/upload-modul/formulare-mit-inquiry4/tags-und-templates.md#design-control-tags)

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `CheckURLParam-TouchData()` | ja | – | – | – |
| `CheckURLParam-DataOK` | – | ja | ja | – |
| `CheckURLParam-Data` | ja | ja | ja | – |
| `CheckCookie-TouchData()` | ja | – | – | – |
| `CheckCookie-DataOK` | – | ja | ja | – |
| `CheckCookie-Data` | ja | ja | ja | – |

Zulässig sind alle sechs Tags auf allen Templates.

## Verwandte Themen

* Referenz: Design Control Tags
* Materialien: [Verwendete Cookies](https://dokumentation.websale.de/v8s/referenz/verwendete-cookies.md)
* Wegweiser: [Werbeerfolgskontrollen mit Referer und SubReferer](https://dokumentation.websale.de/v8s/marketing-funktionen/werbeerfolgskontrollen-mit-referer-und-subreferer.md)


## Related topics

- [DC- (Cookie-Daten)](https://dokumentation.websale.de/v8s/referenz/tags/dc/cookie-daten.md)
- [DC- (Vergleiche und weitere Tags)](https://dokumentation.websale.de/v8s/referenz/tags/dc/vergleiche.md)
- [AC- (AgreementCookies)](https://dokumentation.websale.de/v8s/referenz/tags/ac-agreementcookies.md)
- [$wsCookie - Browser-Cookies](https://dokumentation.websale.de/frontend/referenz/module/ws-cookie-browser-cookie.md)
- [Glossar: Fachbegriffe der WEBSALE-Dokumentation](https://dokumentation.websale.de/glossar.md)


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