ProcessWire - Sanitizer: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 10: Zeile 10:
 
=== E-Mail bereinigen ===
 
=== E-Mail bereinigen ===
 
  $email = $sanitizer->email(string $value);
 
  $email = $sanitizer->email(string $value);
 +
 +
== Welche Sanitizer gibt es? ==
 +
ProcessWire bietet eine Vielzahl von Sanitisiermethoden, die über das Sanitizer-Objekt verfügbar sind. Hier ist eine Liste der häufig verwendeten Sanitisiermethoden und deren Beschreibungen:
 +
 +
    text($value)
 +
        Entfernt alle HTML-Tags und optional Leerzeichen.
 +
        Beispiel: wire('sanitizer')->text($input->post->title);
 +
 +
    textarea($value)
 +
        Entfernt alle HTML-Tags, behält jedoch Zeilenumbrüche bei.
 +
        Beispiel: wire('sanitizer')->textarea($input->post->description);
 +
 +
    pageName($value)
 +
        Wandelt den Wert in einen validen Seitennamen um (nur Kleinbuchstaben, Zahlen und Bindestriche).
 +
        Beispiel: wire('sanitizer')->pageName($input->post->name);
 +
 +
    name($value)
 +
        Entfernt alles außer Buchstaben, Zahlen, Bindestrichen und Unterstrichen.
 +
        Beispiel: wire('sanitizer')->name($input->post->username);
 +
 +
    email($value)
 +
        Filtert und validiert E-Mail-Adressen.
 +
        Beispiel: wire('sanitizer')->email($input->post->email);
 +
 +
    url($value)
 +
        Filtert und validiert URLs.
 +
        Beispiel: wire('sanitizer')->url($input->post->website);
 +
 +
    int($value)
 +
        Wandelt den Wert in eine Ganzzahl um.
 +
        Beispiel: wire('sanitizer')->int($input->post->age);
 +
 +
    float($value)
 +
        Wandelt den Wert in eine Gleitkommazahl um.
 +
        Beispiel: wire('sanitizer')->float($input->post->price);
 +
 +
    bool($value)
 +
        Wandelt den Wert in einen Booleschen Wert um.
 +
        Beispiel: wire('sanitizer')->bool($input->post->active);
 +
 +
    entityDecode($value)
 +
        Wandelt HTML-Entities in ihre entsprechenden Zeichen um.
 +
        Beispiel: wire('sanitizer')->entityDecode($input->post->encodedText);
 +
 +
    unentities($value)
 +
        Entfernt HTML-Entities.
 +
        Beispiel: wire('sanitizer')->unentities($input->post->encodedText);
 +
 +
    purify($value)
 +
        Bereinigt HTML-Inhalt, um sicherzustellen, dass keine schädlichen Skripte oder Tags vorhanden sind.
 +
        Beispiel: wire('sanitizer')->purify($input->post->htmlContent);
 +
 +
    filename($value)
 +
        Wandelt den Wert in einen gültigen Dateinamen um.
 +
        Beispiel: wire('sanitizer')->filename($input->post->uploadedFileName);
 +
 +
    date($value)
 +
        Konvertiert den Wert in ein gültiges Datum (Unix-Timestamp).
 +
        Beispiel: wire('sanitizer')->date($input->post->date);
 +
 +
    selectorValue($value)
 +
        Bereinigt einen Wert für die Verwendung in einem Selektor.
 +
        Beispiel: wire('sanitizer')->selectorValue($input->post->selector);
 +
 +
Beispiel für die Verwendung mehrerer Sanitisierer in Ihrem Formular
 +
 +
Angenommen, Sie möchten sicherstellen, dass alle Eingabewerte ordnungsgemäß bereinigt werden, können Sie die verschiedenen Sanitisierer wie folgt verwenden:
 +
 +
<syntaxhighlight lang="php">
 +
 +
public function getFormMarkup() {
 +
    $titleValue = wire('sanitizer')->text(wire('input')->post('title'));
 +
    $titleErrors = $this->getFieldErrors('title');
 +
   
 +
    $resourceTypeValue = wire('sanitizer')->int(wire('input')->post('resource_type'));
 +
    $resourceTypeErrors = $this->getFieldErrors('resource_type');
 +
 +
    $resourceTypes = $this->getResourceTypes();
 +
    $resourceTypeOptions = '';
 +
    foreach ($resourceTypes as $option) {
 +
        $selected = $resourceTypeValue == $option->id ? ' selected' : '';
 +
        $resourceTypeOptions .= "<option value='{$option->id}'{$selected}>{$option->title}</option>";
 +
    }
 +
 +
    return "
 +
        <form method='post'>
 +
            <div class='uk-margin'>
 +
                <label class='uk-form-label' for='title'>Titel</label>
 +
                <div class='uk-form-controls'>
 +
                    <input class='uk-input' type='text' name='title' id='title' value='{$titleValue}'>
 +
                    {$titleErrors}
 +
                </div>
 +
            </div>
 +
            <div class='uk-margin'>
 +
                <label class='uk-form-label' for='resource_type'>Ressourcentyp</label>
 +
                <div class='uk-form-controls'>
 +
                    <select class='uk-select' name='resource_type' id='resource_type'>
 +
                        {$resourceTypeOptions}
 +
                    </select>
 +
                    {$resourceTypeErrors}
 +
                </div>
 +
            </div>
 +
            <div class='uk-margin'>
 +
                <button type='submit' name='submit_add' class='uk-button uk-button-primary'>Weiter</button>
 +
            </div>
 +
        </form>
 +
    ";
 +
}
 +
</syntaxhighlight>
 +
Mit diesen Sanitisiermethoden können Sie sicherstellen, dass alle Eingaben korrekt bereinigt und validiert werden, bevor sie weiterverarbeitet werden.

Version vom 5. August 2024, 08:36 Uhr

Links

Snippets

URL Parsen und bereinigen

https://processwire.com/api/ref/sanitizer/url/g/
$url = $sanitizer->url($page->address_web);
$url = $sanitizer->entities($url); // => http://www.url.de/mypage

E-Mail bereinigen

$email = $sanitizer->email(string $value);

Welche Sanitizer gibt es?

ProcessWire bietet eine Vielzahl von Sanitisiermethoden, die über das Sanitizer-Objekt verfügbar sind. Hier ist eine Liste der häufig verwendeten Sanitisiermethoden und deren Beschreibungen:

   text($value)
       Entfernt alle HTML-Tags und optional Leerzeichen.
       Beispiel: wire('sanitizer')->text($input->post->title);
   textarea($value)
       Entfernt alle HTML-Tags, behält jedoch Zeilenumbrüche bei.
       Beispiel: wire('sanitizer')->textarea($input->post->description);
   pageName($value)
       Wandelt den Wert in einen validen Seitennamen um (nur Kleinbuchstaben, Zahlen und Bindestriche).
       Beispiel: wire('sanitizer')->pageName($input->post->name);
   name($value)
       Entfernt alles außer Buchstaben, Zahlen, Bindestrichen und Unterstrichen.
       Beispiel: wire('sanitizer')->name($input->post->username);
   email($value)
       Filtert und validiert E-Mail-Adressen.
       Beispiel: wire('sanitizer')->email($input->post->email);
   url($value)
       Filtert und validiert URLs.
       Beispiel: wire('sanitizer')->url($input->post->website);
   int($value)
       Wandelt den Wert in eine Ganzzahl um.
       Beispiel: wire('sanitizer')->int($input->post->age);
   float($value)
       Wandelt den Wert in eine Gleitkommazahl um.
       Beispiel: wire('sanitizer')->float($input->post->price);
   bool($value)
       Wandelt den Wert in einen Booleschen Wert um.
       Beispiel: wire('sanitizer')->bool($input->post->active);
   entityDecode($value)
       Wandelt HTML-Entities in ihre entsprechenden Zeichen um.
       Beispiel: wire('sanitizer')->entityDecode($input->post->encodedText);
   unentities($value)
       Entfernt HTML-Entities.
       Beispiel: wire('sanitizer')->unentities($input->post->encodedText);
   purify($value)
       Bereinigt HTML-Inhalt, um sicherzustellen, dass keine schädlichen Skripte oder Tags vorhanden sind.
       Beispiel: wire('sanitizer')->purify($input->post->htmlContent);
   filename($value)
       Wandelt den Wert in einen gültigen Dateinamen um.
       Beispiel: wire('sanitizer')->filename($input->post->uploadedFileName);
   date($value)
       Konvertiert den Wert in ein gültiges Datum (Unix-Timestamp).
       Beispiel: wire('sanitizer')->date($input->post->date);
   selectorValue($value)
       Bereinigt einen Wert für die Verwendung in einem Selektor.
       Beispiel: wire('sanitizer')->selectorValue($input->post->selector);

Beispiel für die Verwendung mehrerer Sanitisierer in Ihrem Formular

Angenommen, Sie möchten sicherstellen, dass alle Eingabewerte ordnungsgemäß bereinigt werden, können Sie die verschiedenen Sanitisierer wie folgt verwenden:

public function getFormMarkup() {
    $titleValue = wire('sanitizer')->text(wire('input')->post('title'));
    $titleErrors = $this->getFieldErrors('title');
    
    $resourceTypeValue = wire('sanitizer')->int(wire('input')->post('resource_type'));
    $resourceTypeErrors = $this->getFieldErrors('resource_type');

    $resourceTypes = $this->getResourceTypes();
    $resourceTypeOptions = '';
    foreach ($resourceTypes as $option) {
        $selected = $resourceTypeValue == $option->id ? ' selected' : '';
        $resourceTypeOptions .= "<option value='{$option->id}'{$selected}>{$option->title}</option>";
    }

    return "
        <form method='post'>
            <div class='uk-margin'>
                <label class='uk-form-label' for='title'>Titel</label>
                <div class='uk-form-controls'>
                    <input class='uk-input' type='text' name='title' id='title' value='{$titleValue}'>
                    {$titleErrors}
                </div>
            </div>
            <div class='uk-margin'>
                <label class='uk-form-label' for='resource_type'>Ressourcentyp</label>
                <div class='uk-form-controls'>
                    <select class='uk-select' name='resource_type' id='resource_type'>
                        {$resourceTypeOptions}
                    </select>
                    {$resourceTypeErrors}
                </div>
            </div>
            <div class='uk-margin'>
                <button type='submit' name='submit_add' class='uk-button uk-button-primary'>Weiter</button>
            </div>
        </form>
    ";
}

Mit diesen Sanitisiermethoden können Sie sicherstellen, dass alle Eingaben korrekt bereinigt und validiert werden, bevor sie weiterverarbeitet werden.