Řetězec dotazu
Dotaz složka , často Řetězec dotazu ( angličtina pro dotazu řetězec ) je součástí Uniform Resource Locator (URL) na World Wide Web a RFC 3986 zadán. Komponenta dotazu obsahuje data, často ve formě pojmenovaných parametrů , která lze odeslat na webový server a vyhodnotit následnou serverovou částí webové aplikace .
konstrukce
Řetězec dotazu začíná otazníkem ( ?) a končí znakem hash ( #) nebo koncem adresy URL. Často se skládá z jednoho nebo více parametrů, často ve formě párů klíč – hodnota, které jsou od sebe často odděleny znakem ampersand ( &). Název parametru a hodnota jsou odděleny vyhrazeným znakem , obvykle znaménkem rovnosti ( =). Uvedené oddělovače odpovídají požadavkům World Wide Web Consortium (W3C) na přenos dat formuláře HTML .
Následující adresa URL obsahuje řetězec dotazu stichwort=wiki&ausgabe=liste:
http://www.example.org/suche?stichwort=wiki&ausgabe=liste
V tomto případě je parametrem stichworthodnota wikia přiřazená ausgabehodnota parametru liste.
příklad
Webový formulář je implementován následovně:
<form action="suche.php" method="get">
<label for="stichwort">Suche nach</label>
<input type="text" name="stichwort" id="stichwort" />
<input type="hidden" name="suchdatum" value="2019-11-27" />
<input type="submit" value="Suche starten" />
</form>
Všimněte si pole hidden ( type="hidden") suchdatum. V prohlížeči není viditelný, ale stane se součástí řetězce dotazu při odeslání formuláře. Tlačítko pro odeslání na druhé straně není zahrnuto v řetězci dotazu, protože mu nebyl přidělen název ( name). Pokud uživatel zadá do textového pole klíčové slovo „wiki“ a odešle formulář, stichwort=wiki&suchdatum=2019-11-27vygeneruje se například následující adresa URL s odpovídajícím řetězcem dotazu :
http://<server>/suche.php?stichwort=wiki&suchdatum=2019-11-27
Vyhodnocení (v PHP)
Řetězec dotazu lze dotazovat v PHP . Obsah řetězce dotazu je k dispozici jako pole .
echo $_GET['stichwort'];
výstupy, například text, který byl zadán do vyhledávacího pole.
print_r($_GET);
výsledky s výše uvedeným příkladem
Array
(
[stichwort] => wiki
[suchdatum] => 2019-11-27
)
Nevýhody a problémy
Kódování
Některé znaky se nesmí objevit v řetězci dotazu, protože by jinak mohly být interpretovány nesprávně. Pokud je například v hodnotě použit znak rovnosti, je to nesprávně rozpoznáno jako oddělovač klíč – hodnota. Při generování řetězce dotazu musí být tyto znaky speciálně kódovány - například mezeru je třeba +převést na znaménko plus ( ).
Oddělovač parametrů
Ampersand ( &) jako oddělovač dvojic klíč-hodnota je problematická v dokumentech HTML, protože tento znak musí být speciálně zakódována v souladu s World Wide Web Consortium (W3C). W3C proto doporučuje oddělit páry středníkem ( ;).
Bezpečnostní rizika
Protože je řetězec dotazu součástí adresy URL, může jej zobrazit a upravit každý uživatel internetu v prohlížeči . Ve webové aplikaci by proto měly být do řetězce dotazu vloženy pouze nekritické parametry, například záznam do vyhledávacího pole.
Technická omezení
Pokud je třeba přenést větší množství dat, je vhodné je nepřenášet prostřednictvím adresy URL, ale v těle zprávy pomocí metody HTTP POST , protože na adresy URL se vztahují některá omezení:
- Z důvodu kompatibility specifikace HTTP doporučuje maximální velikost 255 bajtů pro adresy URL nebo URI .
- Internet Explorer nepodporuje adresy URL, které se skládají z více než 2,083 znaků.
- Webové servery mohou sami omezit maximální délku řetězce dotazu. Pokud je tento limit překročen, server odešle stavový kód HTTP 414 zpět klientovi.
- (Mezitím zastaralá) specifikace HTML 3 předepisuje maximální délku cílů odkazů 1024 znaků. Toto omezení již od HTML 4 neplatí.
Viz také
Individuální důkazy
- ↑ T. Berners -Lee, R. Fielding, L. Masinter: RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax . [Errata: RFC 3986 ]. Leden 2005. Oddíl 3.4: Dotaz. Výchozí: [66]. (Nahrazuje RFC 2732 , RFC 2396 , RFC 1808 - aktualizováno RFC 6874 , RFC 7320 - anglicky).
- ↑ 17 formulářů. 17.13.4 Typy obsahu formuláře. In: Specifikace HTML 4.01. World Wide Web Consortium (W3C), 27. března 2018, přístup 27. listopadu 2019 .
- ↑ Doporučení W3C pro oddělení párů klíč – hodnota
- ↑ Specifikace HTTP / 1.1
- ↑ http://support.microsoft.com/kb/208427
- ↑ Specifikace HTML 3