Skip to content

Commit 0a39cef

Browse files
committed
wip
1 parent 06f1cb7 commit 0a39cef

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

http/cs/request.texy

+16-8
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ HTTP request
44
.[perex]
55
Nette zapouzdřuje HTTP požadavek do objektů se srozumitelným API a zároveň poskytuje sanitizační filtr.
66

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].
88

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

1111
→ [Instalace a požadavky |@home#Instalace]
1212

@@ -199,28 +199,36 @@ echo $httpRequest->detectLanguage($langs); // en
199199
RequestFactory
200200
==============
201201

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.)
203203

204204
```php
205205
$factory = new Nette\Http\RequestFactory;
206206
$httpRequest = $factory->fromGlobals();
207207
```
208208

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

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:
212218

213219
```php
214-
// odstraníme mezery z cesty
220+
// odstranění mezer z cesty
215221
$requestFactory->urlFilters['path']['%20'] = '';
216222

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
218224
$requestFactory->urlFilters['url']['[.,)]$'] = '';
219225

220-
// vyčistíme cestu od zdvojených lomítek (výchozí filtr)
226+
// vyčištění cesty od zdvojených lomítek (výchozí filtr)
221227
$requestFactory->urlFilters['path']['/{2,}'] = '/';
222228
```
223229

230+
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.
231+
224232

225233
Uploadované soubory
226234
===================

http/cs/response.texy

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ HTTP response
44
.[perex]
55
Nette zapouzdřuje HTTP odpověď do objektů se srozumitelným API.
66

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()`.
88

99
→ [Instalace a požadavky |@home#Instalace]
1010

http/cs/urls.texy

+12-3
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ Url::removeDotSegments('./today/../file.txt'); // 'file.txt'
131131
UrlImmutable
132132
============
133133

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:
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:
135135

136136
```php
137137
use Nette\Http\UrlImmutable;
@@ -230,7 +230,9 @@ $url->isEqual('https://nette.org');
230230
UrlScript
231231
=========
232232

233-
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á:
234236

235237
/--pre
236238
baseUrl basePath relativePath relativeUrl
@@ -242,6 +244,13 @@ Třída [api:Nette\Http\UrlScript] je potomkem `UrlImmutable` a navíc rozlišuj
242244
scriptPath pathInfo
243245
\--
244246

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+
245254
Pro vrácení částí URL jsou k dispozici metody:
246255

247256
.[language-php]
@@ -254,4 +263,4 @@ Pro vrácení částí URL jsou k dispozici metody:
254263
| `getRelativeUrl(): string` | `'script.php/pathinfo/?name=param#footer'`
255264
| `getPathInfo(): string` | `'/pathinfo/'`
256265

257-
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

Comments
 (0)