mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 20:47:15 +01:00
224 lines
5.5 KiB
Markdown
224 lines
5.5 KiB
Markdown
|
# Http-Komponente
|
|||
|
|
|||
|
Die Http-Komponente ist eine objektorientierte Abstraction der HTTP-Spezifikation.
|
|||
|
|
|||
|
## Request-Klasse
|
|||
|
|
|||
|
Die Request-Klasse beinhaltet `$_GET`, `$_POST`, `$_FILES`, `$_COOKIE` (todo), und `$_SERVER`.
|
|||
|
|
|||
|
### Request erstellen
|
|||
|
|
|||
|
```php
|
|||
|
$request = Request::createFromGlobals();
|
|||
|
```
|
|||
|
|
|||
|
ist das gleiche wie
|
|||
|
|
|||
|
```php
|
|||
|
$request = new Request(
|
|||
|
$_GET,
|
|||
|
$_POST,
|
|||
|
$_FILES,
|
|||
|
$_SERVER
|
|||
|
$_COOKIE,
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
createFromGlobals ist die empfohlene Methode
|
|||
|
|
|||
|
##### Request aus Container holen
|
|||
|
|
|||
|
```php
|
|||
|
$request = $container->get('Request');
|
|||
|
```
|
|||
|
|
|||
|
Im alten Bereich:
|
|||
|
|
|||
|
```php
|
|||
|
$request = $this->app->Container->get('Request');
|
|||
|
```
|
|||
|
|
|||
|
### Request-Parameter abrufen
|
|||
|
|
|||
|
* `$request->getGet()` für den Zugriff auf `$_GET`
|
|||
|
* `$request->getPost()` für den Zugriff auf `$_POST`
|
|||
|
* `$request->getFiles()` für den Zugriff auf `$_FILES`
|
|||
|
* `$request->getServer()` für den Zugriff auf `$_SERVER`
|
|||
|
* `$request->getCookie()` für den Zugriff auf `$_COOKIE` (TODO)
|
|||
|
|
|||
|
###### Beispiele
|
|||
|
|
|||
|
* `$request->getGet('value')` wie `$_GET['value']`
|
|||
|
* `$request->getPost('value')` wie `$_POST['value']`
|
|||
|
* `$request->getServer('SERVER_NAME')` wie `$_SERVER['SERVER_NAME']`
|
|||
|
|
|||
|
#### ReadonlyParameterCollection
|
|||
|
|
|||
|
Die public Eigenschaften `get`, `post`, `files` und `server` liefern Instanzen der `ReadonlyParameterCollection`-Klasse.
|
|||
|
Die Klasse bietet einige Hilfsmethoden:
|
|||
|
|
|||
|
* `has()` – Gibt `true` zurück wenn der Parameter gesetzt wurde
|
|||
|
* `get()` – Gibt den Parameter zurück falls dieser gesetzt wurde; andernfalls `null`
|
|||
|
* `all()` – Gibt alle gesetzten Parameter zurück
|
|||
|
|
|||
|
|
|||
|
* `getBool()` – Wandelt den Wert zu Boolean
|
|||
|
* `getInt()` – Wandelt den Wert zu Integer
|
|||
|
* `getDigits()` – Wandelt den Wert zu String und entfernt alle Zeichen außer Zahlen `[0-9]`
|
|||
|
* `getAlpha()` – Wandelt den Wert zu String und entfernt alle Zeichen außer Buchstaben `[a-z, A-Z]`
|
|||
|
* `getAlphaNum()` – wie `getAlpha()` zusätzlich Zahlen `[a-z, A-Z, 0-9]`
|
|||
|
* `getAlphaNumWithDashes()` – wie `getAlphaDigit()` zusätzlich Minus und Unterstrich `[a-z, A-Z, 0-9, -, _]`
|
|||
|
|
|||
|
##### Default-Werte
|
|||
|
|
|||
|
Die Getter-Methoden der `ParameterCollection` nehmen als zweiten Parameter einen Default-Wert entgegen.
|
|||
|
Der Default-Wert wird verwendet wenn der Parameter nicht gesetzt ist.
|
|||
|
|
|||
|
###### Beispiele
|
|||
|
|
|||
|
* `$request->post->get('cmd', 'download')`
|
|||
|
Gibt `'download'` zurück, falls `$_POST['cmd']'` nicht gesetzt ist.
|
|||
|
* `$request->post->getBool('active', true)`
|
|||
|
Gibt `true` zurück, falls `$_POST['active']'` nicht gesetzt ist.
|
|||
|
|
|||
|
### Nützliches
|
|||
|
|
|||
|
Nachfolgende Beispielausgaben gehen von folgendem Request aus:
|
|||
|
|
|||
|
```http request
|
|||
|
POST /wawision-19.1/www/index.php?module=welcome&action=settings HTTP/1.1
|
|||
|
|
|||
|
Host: 192.168.0.177
|
|||
|
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0
|
|||
|
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
|||
|
Accept-Language: de-DE,de;q=0.8,en-US;q=0.5,en;q=0.3
|
|||
|
Accept-Encoding: gzip, deflate
|
|||
|
Referer: http://192.168.0.177/wawision-19.1/www/index.php?module=welcome&action=settings
|
|||
|
Content-Type: application/x-www-form-urlencoded
|
|||
|
Content-Length: 101
|
|||
|
Connection: keep-alive
|
|||
|
Cookie: PHPSESSID=19n48qro8d9blluqveg3dm1qth
|
|||
|
Upgrade-Insecure-Requests: 1
|
|||
|
|
|||
|
startseite=&defaultcolor=%23FFFFFF&chat_popup=1&callcenter_notification=1&submit_startseite=Speichern
|
|||
|
```
|
|||
|
|
|||
|
#### `$request->isSecure()`
|
|||
|
|
|||
|
Kam der Request über eine geschützte Verbindung?
|
|||
|
|
|||
|
Ausgabe: `false`
|
|||
|
|
|||
|
#### `$request->isAjax()`
|
|||
|
|
|||
|
Kam der Request über XHR?
|
|||
|
|
|||
|
Ausgabe: `false`
|
|||
|
|
|||
|
#### `$request->isCli()`
|
|||
|
|
|||
|
Kam der Request über eine Kommandozeile?
|
|||
|
|
|||
|
Ausgabe: `false`
|
|||
|
|
|||
|
#### `$request->getMethod()`
|
|||
|
|
|||
|
HTTP-Verb in Grossbuchstaben.
|
|||
|
|
|||
|
Ausgabe: `POST`
|
|||
|
|
|||
|
#### `$request->getContentType()`
|
|||
|
|
|||
|
Der hintere Teil von Content-Type Header.
|
|||
|
|
|||
|
Ausgabe: `x-www-form-urlencoded`
|
|||
|
|
|||
|
Beispiele:
|
|||
|
* `json` bei `application/json`
|
|||
|
* `html` bei `text/html`
|
|||
|
|
|||
|
#### `$request->getAcceptableContentTypes()`
|
|||
|
|
|||
|
```php
|
|||
|
array (
|
|||
|
0 => 'text/html',
|
|||
|
1 => 'application/xhtml+xml',
|
|||
|
2 => 'application/xml',
|
|||
|
3 => '*/*',
|
|||
|
)
|
|||
|
```
|
|||
|
|
|||
|
#### `$request->getContent()`
|
|||
|
|
|||
|
Gibt den Request-Body zurück.
|
|||
|
|
|||
|
Ausgabe: `startseite=&defaultcolor=%23FFFFFF&chat_popup=1&callcenter_notification=1&submit_startseite=Speichern`
|
|||
|
|
|||
|
#### `$request->getFullUri()`
|
|||
|
|
|||
|
Nicht mehr benutzen; stattdessen getFullUrl oder getBaseUrl verwenden.
|
|||
|
|
|||
|
`http://192.168.0.177/wawision-19.1/www/index.php?module=welcome&action=settings`
|
|||
|
|
|||
|
#### `$request->getFullUrl()`
|
|||
|
|
|||
|
Gibt die komplette Url zurück.
|
|||
|
|
|||
|
Ausgabe: `http://192.168.0.177/wawision-19.1/www/index.php?module=welcome&action=settings`
|
|||
|
|
|||
|
#### `$request->getBaseUrl()`
|
|||
|
|
|||
|
Gibt die Url ohne GET parameter zurück.
|
|||
|
|
|||
|
Ausgabe: `http://192.168.0.177/wawision-19.1/www/index.php`
|
|||
|
|
|||
|
#### `$request->getUrlForPath('/mypath')`
|
|||
|
|
|||
|
Gibt die URL um den angegebenen Pfad erweitert zurück.
|
|||
|
Der Pfad muss mit `/` beginnen.
|
|||
|
|
|||
|
Ausgabe: `http://192.168.0.177/wawision-19.1/www/mypath`
|
|||
|
|
|||
|
#### `$request->getBasePath()`
|
|||
|
|
|||
|
Gibt den Pfad zwischen URL und aktuellen SCRIPT_NAME an.
|
|||
|
|
|||
|
##### Beispiel1:
|
|||
|
|
|||
|
```php
|
|||
|
$_SERVER[
|
|||
|
'REQUEST_URI' => '/www/path/?value=1',
|
|||
|
'SCRIPT_NAME' => '/www/path/index.php',
|
|||
|
]
|
|||
|
```
|
|||
|
|
|||
|
Ausgabe: `/`
|
|||
|
|
|||
|
##### Beispiel2:
|
|||
|
|
|||
|
URL: 'http://192.168.0.177/wawision/www/api/v1/dateien/50' => '/v1/dateien/50'
|
|||
|
|
|||
|
#### `$request->getRequestUri()`
|
|||
|
|
|||
|
Gibt die relative Url ab dem Host zurück; wie `$_SERVER['REQUEST_URI']`
|
|||
|
|
|||
|
Ausgabe: `/wawision-19.1/www/index.php?module=welcome&action=settings`
|
|||
|
|
|||
|
#### `$request->isFailsafeUri()`
|
|||
|
|
|||
|
Gibt `true` zurück, wenn die Failsafe-URI im Request benutzt wurde.
|
|||
|
|
|||
|
Beispiel Failsafe-Uri: /api/index.php?path=/v1/adressen
|
|||
|
|
|||
|
#### `$request->getPathInfo()`
|
|||
|
|
|||
|
Gibt den PathInfo-Teil der Url zurück.
|
|||
|
|
|||
|
Ausgabe: `''`
|
|||
|
|
|||
|
#### `$request->getSchemeAndHttpHost()`
|
|||
|
|
|||
|
Gibt HTTP Schema und Host aus.
|
|||
|
|
|||
|
Ausgabe: `http://localhost`
|