ProcessWire - $input Variable: Unterschied zwischen den Versionen
Steff (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Links == http://processwire.com/api/variables/input/ THE .$INPUT VARIABLE IS YOUR CONNECTION TO GET, POST AND COOKIE VARIABLES, URL SEGMENTS, AND PAGE NUMB…“) |
Steff (Diskussion | Beiträge) |
||
| Zeile 2: | Zeile 2: | ||
http://processwire.com/api/variables/input/ | http://processwire.com/api/variables/input/ | ||
| − | + | == Einleitung == | |
| + | Die $INPUT Variable ist die '''Verbindung zu Get, Post und Cookie Variablen''' sowie '''URL-Segmenten''' und '''Seitennummerierung'''. | ||
| + | |||
| + | Wenn Variablen über die $input Variable abgerufen werden, hat das einige Vorteile gegenüber den entsprechenden PHP Superglobalen ($_GET...): | ||
| + | * Rückgabe unabhängig von PHP magic_quotes. '''Variablen sind niemals escaped'''. | ||
| + | * '''Gibt 0 zurück''' wenn eine '''Variable nicht existiert'''. | ||
| + | * $input->whitelist als vertrauenswürdiger Speicherplatz für '''sanitized Variablen'''. | ||
| + | * Variablen Zugriff über '''Objekt, Array oder über eine Funktion'''. | ||
| + | |||
| + | == GET, POST und COOKIE Variablen == | ||
| + | * $input->get provides access to your GET variables | ||
| + | * $input->post provides access to your POST variables | ||
| + | * $input->cookie provides access to your COOKIE variables | ||
| + | * Unten aufgeführte Funktionen funktionieren mit POST, GET und COOKIE | ||
| + | '''Hinweis: Variablen sind NICHT sanitized''' | ||
| + | |||
| + | === Zugriff === | ||
| + | GET / POST | ||
| + | $value = $input->get->name; // access as object property | ||
| + | $value = $input->get['name']; // access as array index | ||
| + | $value = $input->get('name'); // access as function | ||
| + | $value = $input->post->name; // access as object property | ||
| + | //... you name it | ||
| + | |||
| + | === Nicht vorhanden oder leer ? === | ||
| + | <pre> | ||
| + | if($input->post->hello === null) echo "hello doesn't exist"; | ||
| + | else if(!$input->post->hello) echo "hello exists, but is blank"; | ||
| + | </pre> | ||
| + | |||
| + | === Iterieren === | ||
| + | <pre> | ||
| + | foreach($input->get as $key => $value) | ||
| + | echo htmlentities("$key = $value") . "<br />"; | ||
| + | </pre> | ||
| + | |||
| + | === Variablen Zählen === | ||
| + | echo "There are " . count($input->cookie) . " cookie variables"; | ||
| + | |||
| + | == $INPUT->WHITELIST() == | ||
| + | Wenn man eine Variable aus einer Nutzereingabe überprüft und Sanitized hat, kann man sie in die Whitelist packen. Dadurch hat man selbst den Überblick welche Variablen bereits gesäubert sind. Manche Module in ProcessWire (z.B. der Pager) greifen auf die Whitelist zu. | ||
| + | |||
| + | $input->whitelist($key, $value) | ||
| + | //Set a whitelist value | ||
| + | |||
| + | $input->whitelist($key) | ||
| + | //Get a whitelist value | ||
| + | |||
| + | Beispiel | ||
| + | <pre> | ||
| + | // sanitize the search text and whitelist it | ||
| + | $value = substr(strip_tags($input->get->query), 0, 50); | ||
| + | $input->whitelist('query', $value); | ||
| + | // in some other file, echo the search text in the input box | ||
| + | $value = htmlentities($input->whitelist->query, ENT_QUOTES); | ||
| + | echo "<input type='text' name='query' value='$value' />"; | ||
| + | </pre> | ||
| + | Hier wurde mit PHP gesäubert. Der Sanitizer von ProcessWire stellt aber bereits viele Funktionen für diesen Zweck zur Verfügung. | ||
| + | |||
| + | == URL-Segmente == | ||
| + | Wenn man in den Template-Einstellungen der Seite URL Segmente erlauben einschaltet, kann man die '''Segmente hinter der Seitenurl auswerten''' und im Template verarbeiten. Ohne diese Einstellung gibt es einen 404-Fehler | ||
| + | <pre> | ||
| + | // Aufruf der Seite /path/to/page/ | ||
| + | $input->urlSegment($n) //Retrieve the $n'th URL segment (1–3*) | ||
| + | $input->urlSegment1 //Retrieve the first: /path/to/page/aaa/ | ||
| + | $input->urlSegment2 //Retrieve the second: /path/to/page/aaa/bbb/ | ||
| + | $input->urlSegment3 //Retrieve the third: /path/to/page/aaa/bbb/ccc/ | ||
| + | </pre> | ||
| + | Hinweis: Mehr als 3 Segmente kann man über die config.php erlauben: | ||
| + | $config->maxUrlSegments | ||
| + | * Wenn für das Seitentemplate Caching aktiviert ist werden auch die Seitenvariationen gecacht | ||
| + | |||
| + | == Seitenzahlen mit $input->pageNum == | ||
| + | Seitenzahlen stehen am Ende der url in der Form | ||
| + | /path/to/some-page/page4 | ||
| + | * Die aktuelle Seitenzahl, kann man im Template über $input->pageNum abrufen: | ||
| + | $input->pageNum //Returns the current page number from the URL (1–999) | ||
| + | $page->pageNum // DEPRECATED | ||
| + | * Sobald über einen Selector ein Parameter "''limit=[n]''" gesetzt ist versucht PW die aktuelle Seitenzahl über $input->pageNum abzurufen um so im Selektor den passenden Bereich zu finden. | ||
| + | * Möchte man selber den Bereich bestimmen kann man auch über "''start=[n]''" die Seite selbst bestimmen. | ||
Version vom 19. Oktober 2018, 07:45 Uhr
Links
http://processwire.com/api/variables/input/
Einleitung
Die $INPUT Variable ist die Verbindung zu Get, Post und Cookie Variablen sowie URL-Segmenten und Seitennummerierung.
Wenn Variablen über die $input Variable abgerufen werden, hat das einige Vorteile gegenüber den entsprechenden PHP Superglobalen ($_GET...):
- Rückgabe unabhängig von PHP magic_quotes. Variablen sind niemals escaped.
- Gibt 0 zurück wenn eine Variable nicht existiert.
- $input->whitelist als vertrauenswürdiger Speicherplatz für sanitized Variablen.
- Variablen Zugriff über Objekt, Array oder über eine Funktion.
GET, POST und COOKIE Variablen
- $input->get provides access to your GET variables
- $input->post provides access to your POST variables
- $input->cookie provides access to your COOKIE variables
- Unten aufgeführte Funktionen funktionieren mit POST, GET und COOKIE
Hinweis: Variablen sind NICHT sanitized
Zugriff
GET / POST
$value = $input->get->name; // access as object property
$value = $input->get['name']; // access as array index
$value = $input->get('name'); // access as function
$value = $input->post->name; // access as object property
//... you name it
Nicht vorhanden oder leer ?
if($input->post->hello === null) echo "hello doesn't exist";
else if(!$input->post->hello) echo "hello exists, but is blank";
Iterieren
foreach($input->get as $key => $value)
echo htmlentities("$key = $value") . "<br />";
Variablen Zählen
echo "There are " . count($input->cookie) . " cookie variables";
$INPUT->WHITELIST()
Wenn man eine Variable aus einer Nutzereingabe überprüft und Sanitized hat, kann man sie in die Whitelist packen. Dadurch hat man selbst den Überblick welche Variablen bereits gesäubert sind. Manche Module in ProcessWire (z.B. der Pager) greifen auf die Whitelist zu.
$input->whitelist($key, $value) //Set a whitelist value
$input->whitelist($key) //Get a whitelist value
Beispiel
// sanitize the search text and whitelist it
$value = substr(strip_tags($input->get->query), 0, 50);
$input->whitelist('query', $value);
// in some other file, echo the search text in the input box
$value = htmlentities($input->whitelist->query, ENT_QUOTES);
echo "<input type='text' name='query' value='$value' />";
Hier wurde mit PHP gesäubert. Der Sanitizer von ProcessWire stellt aber bereits viele Funktionen für diesen Zweck zur Verfügung.
URL-Segmente
Wenn man in den Template-Einstellungen der Seite URL Segmente erlauben einschaltet, kann man die Segmente hinter der Seitenurl auswerten und im Template verarbeiten. Ohne diese Einstellung gibt es einen 404-Fehler
// Aufruf der Seite /path/to/page/ $input->urlSegment($n) //Retrieve the $n'th URL segment (1–3*) $input->urlSegment1 //Retrieve the first: /path/to/page/aaa/ $input->urlSegment2 //Retrieve the second: /path/to/page/aaa/bbb/ $input->urlSegment3 //Retrieve the third: /path/to/page/aaa/bbb/ccc/
Hinweis: Mehr als 3 Segmente kann man über die config.php erlauben:
$config->maxUrlSegments
- Wenn für das Seitentemplate Caching aktiviert ist werden auch die Seitenvariationen gecacht
Seitenzahlen mit $input->pageNum
Seitenzahlen stehen am Ende der url in der Form
/path/to/some-page/page4
- Die aktuelle Seitenzahl, kann man im Template über $input->pageNum abrufen:
$input->pageNum //Returns the current page number from the URL (1–999) $page->pageNum // DEPRECATED
- Sobald über einen Selector ein Parameter "limit=[n]" gesetzt ist versucht PW die aktuelle Seitenzahl über $input->pageNum abzurufen um so im Selektor den passenden Bereich zu finden.
- Möchte man selber den Bereich bestimmen kann man auch über "start=[n]" die Seite selbst bestimmen.