You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: http/cs/request.texy
+16-8
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ HTTP request
4
4
.[perex]
5
5
Nette zapouzdřuje HTTP požadavek do objektů se srozumitelným API a zároveň poskytuje sanitizační filtr.
6
6
7
-
HTTP požadavek představuje objekt [api:Nette\Http\Request], ke kterému se dostanete tak, že si jej necháte předat pomocí [dependency injection |dependency-injection:passing-dependencies]. V presenterech stačí jen zavolat `$httpRequest = $this->getHttpRequest()`.
7
+
HTTP požadavek představuje objekt [api:Nette\Http\Request]. Pokud pracujete s Nette, tento objekt je automaticky vytvořen frameworkem a můžete si jej nechat předat pomocí [dependency injection |dependency-injection:passing-dependencies]. V presenterech stačí jen zavolat metodu `$this->getHttpRequest()`. Pokud pracujete mimo Nette Framework, můžete si vytvořit objekt pomocí [RequestFactory|#RequestFactory].
8
8
9
-
Co je důležité, tak že Nette když [vytváří|#RequestFactory] tento objekt, všechny vstupní parametry GET, POST, COOKIE a také URL pročistí od kontrolních znaků a neplatných UTF-8 sekvencí. Takže s daty pak můžete bezpečně dále pracovat. Očištěná data se následně používají v presenterech a formulářích.
9
+
Velkou předností Nette je, že při vytváření objektu automaticky pročišťuje všechny vstupní parametry GET, POST, COOKIE a také URL od kontrolních znaků a neplatných UTF-8 sekvencí. S těmito daty pak můžete bezpečně dále pracovat. Očištěná data se následně používají v presenterech a formulářích.
10
10
11
11
→ [Instalace a požadavky |@home#Instalace]
12
12
@@ -199,28 +199,36 @@ echo $httpRequest->detectLanguage($langs); // en
199
199
RequestFactory
200
200
==============
201
201
202
-
Objekt aktuálního HTTP requestu vyrobí [api:Nette\Http\RequestFactory]. Pokud píšete aplikaci, která nepoužívá DI kontejner, vyrobíte request takto:
202
+
Třída [api:Nette\Http\RequestFactory] slouží k vytvoření instance `Nette\Http\Request`, která reprezentuje aktuální HTTP požadavek. (Pokud pracujete s Nette, objekt HTTP požadavku je automaticky vytvořen frameworkem.)
203
203
204
204
```php
205
205
$factory = new Nette\Http\RequestFactory;
206
206
$httpRequest = $factory->fromGlobals();
207
207
```
208
208
209
-
RequestFactory lze před zavoláním `fromGlobals()` konfigurovat. Můžeme vypnout sanitizaci vstupních parametrů od kontrolních znaků a neplatných UTF-8 sekvencí pomocí `$factory->setBinary()`. A také nastavit proxy server pomocí `$factory->setProxy(...)`, což je důležité pro správnou detekci IP adresy uživatele.
209
+
Metoda `fromGlobals()` vytvoří objekt požadavku na základě aktuálních globálních proměnných PHP (`$_GET`, `$_POST`, `$_COOKIE`, `$_FILES` a `$_SERVER`). Při vytváření objektu automaticky pročišťuje všechny vstupní parametry GET, POST, COOKIE a také URL od kontrolních znaků a neplatných UTF-8 sekvencí, což zajišťuje bezpečnost při další práci s těmito daty.
210
210
211
-
Pomocí tzv. filtrů lze URL vyčistit od znaků, které se do něj mohou dostat např. kvůli špatně implementovaným komentářovým systémům na různých cizích webech:
211
+
RequestFactory lze před zavoláním `fromGlobals()` konfigurovat:
212
+
213
+
1. **Vypnutí sanitizace vstupů** - metodou `$factory->setBinary()` vypnete automatické čištění vstupních parametrů od kontrolních znaků a neplatných UTF-8 sekvencí.
214
+
215
+
2. **Informace o proxy serveru** - metodou `$factory->setProxy(...)` sdělíte factory, jakou proxy server používáte, což je nezbytné pro správnou detekci IP adresy uživatele.
216
+
217
+
RequestFactory umožňuje definovat filtry, které automaticky transformují části URL požadavku. Tyto filtry odstraňují nežádoucí znaky z URL, které tam mohou být vloženy nesprávnou například implementací komentářových systémů na různých webech:
212
218
213
219
```php
214
-
// odstraníme mezery z cesty
220
+
// odstranění mezer z cesty
215
221
$requestFactory->urlFilters['path']['%20'] = '';
216
222
217
-
// odstraníme tečku, čárku nebo pravou závorku z konce URI
223
+
// odstranění tečky, čárky nebo pravé závorky z konce URI
První klíč (`'path'` nebo `'url'`) určuje, na kterou část URL se má filtr použít. Druhý klíč je regulární výraz, který se má vyhledat, a hodnota je náhrada, která se použije místo nalezeného textu.
Copy file name to clipboardexpand all lines: http/cs/response.texy
+1-1
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ HTTP response
4
4
.[perex]
5
5
Nette zapouzdřuje HTTP odpověď do objektů se srozumitelným API.
6
6
7
-
HTTP odpověď představuje objekt [api:Nette\Http\Response], ke kterému se dostanete tak, že si jej necháte předat pomocí [dependency injection |dependency-injection:passing-dependencies]. V presenterech stačí jen zavolat `$httpResponse = $this->getHttpResponse()`.
7
+
HTTP odpověď představuje objekt [api:Nette\Http\Response]. Pokud pracujete s Nette, tento objekt je automaticky vytvořen frameworkem a můžete si jej nechat předat pomocí [dependency injection |dependency-injection:passing-dependencies]. V presenterech stačí jen zavolat metodu `$this->getHttpResponse()`.
Třída [api:Nette\Http\UrlImmutable] je immutable (neměnnou) alternativou třídy `Url` (podobně jako je v PHP `DateTimeImmutable` neměnnou alternativou `DateTime`). Místo setterů má tzv. withery, které objekt nemění, ale vracejí nové instance s upravenou hodnotou:
134
+
Třída [api:Nette\Http\UrlImmutable] je immutable (neměnnou) alternativou třídy [#Url] (podobně jako je v PHP `DateTimeImmutable` neměnnou alternativou `DateTime`). Místo setterů má tzv. withery, které objekt nemění, ale vracejí nové instance s upravenou hodnotou:
Třída [api:Nette\Http\UrlScript] je potomkem `UrlImmutable` a navíc rozlišuje tyto další logické části URL:
233
+
Třída [api:Nette\Http\UrlScript] je potomkem [#UrlImmutable] a rozšiřuje jej o další virtuální komponenty URL, jako je kořenový adresáři projektu apod. Stejně jako rodičovská třída je immutable (neměnným) objektem.
234
+
235
+
Následující diagram zobrazuje komponenty, které UrlScript rozpoznává:
234
236
235
237
/--pre
236
238
baseUrl basePath relativePath relativeUrl
@@ -242,6 +244,13 @@ Třída [api:Nette\Http\UrlScript] je potomkem `UrlImmutable` a navíc rozlišuj
242
244
scriptPath pathInfo
243
245
\--
244
246
247
+
- `baseUrl` je základní URL adresa aplikace včetně domény a části cesty ke kořenovému adresáři aplikace
248
+
- `basePath` je část cesty ke kořenovému adresáři aplikace
249
+
- `scriptPath` je cesta k aktuálnímu skriptu
250
+
- `relativePath` je název skriptu (případně další segmenty cesty) relativní k basePath
251
+
- `relativeUrl` je celá část URL za baseUrl, včetně query string a fragmentu.
252
+
- `pathInfo` dnes už málo využívaná část URL za názvem skriptu
253
+
245
254
Pro vrácení částí URL jsou k dispozici metody:
246
255
247
256
.[language-php]
@@ -254,4 +263,4 @@ Pro vrácení částí URL jsou k dispozici metody:
Objekty `UrlScript` přímo nevytváříme, ale vrací jej metoda [Nette\Http\Request::getUrl()|request].
266
+
Objekty `UrlScript` obvykle přímo nevytváříme, ale vrací jej metoda [Nette\Http\Request::getUrl()|request] s již správně nastavenými komponentami pro aktuální HTTP požadavek.
0 commit comments