Frågesträng

Den frågan komponent , ofta frågesträng ( engelska för frågesträngen ) är en del av en Uniform Resource Locator (URL) i World Wide Web och i RFC 3986 anges. Frågekomponenten innehåller data, ofta i form av namngivna parametrar , som kan skickas till en webbserver och utvärderas av nedströms serverdel i en webbapplikation .

konstruktion

En frågesträng börjar med ett frågetecken ( ?) och slutar med ett hashtecken ( #) eller slutet av URL: en. Den består ofta av en eller flera parametrar, ofta i form av nyckel-värdepar, som ofta separeras från varandra med ett ampersand ( &). Parameternamnet och värdet separeras av ett reserverat tecken , vanligtvis ett likhetstecken ( =). De angivna separatorerna motsvarar kraven i World Wide Web Consortium (W3C) för överföring av HTML -formulärdata .

Följande URL innehåller frågesträngen stichwort=wiki&ausgabe=liste:

http://www.example.org/suche?stichwort=wiki&ausgabe=liste

I detta fall parametern är stichwortvärdet wikioch ausgabeparametervärdet listetilldelas.

exempel

Ett webbformulär implementeras enligt följande:

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

Notera det dolda ( type="hidden") fältet suchdatum. Det syns inte i webbläsaren, men blir en del av frågesträngen när formuläret skickas. Skicka -knappen däremot ingår inte i frågesträngen eftersom den inte har fått ett namn ( name). Om användaren anger sökordet "wiki" i textfältet och skickar in formuläret, stichwort=wiki&suchdatum=2019-11-27genereras till exempel följande webbadress med motsvarande söksträng :

http://<server>/suche.php?stichwort=wiki&suchdatum=2019-11-27

Utvärdering (i PHP)

Frågesträngen kan efterfrågas i PHP . Frågesträngens innehåll är tillgängligt som en array .

echo $_GET['stichwort'];

matar ut texten som angavs i sökfältet.

print_r($_GET);

resultat med exemplet ovan

Array
(
    [stichwort] => wiki
    [suchdatum] => 2019-11-27
)

Nackdelar och problem

Kodning

Vissa tecken får inte visas i en frågesträng, eftersom de annars kan tolkas felaktigt. Om exempelvis likhetstecknet används inom ett värde, identifieras detta felaktigt som en nyckel-värdeavgränsare. När frågesträngen genereras måste dessa tecken vara speciellt kodade - till exempel måste ett mellanslag +konverteras till ett plustecken ( ).

Separator för parametrar

Den et-tecken ( &) som en separator av nyckelvärdespar är problematiskt i HTML-dokument, eftersom denna karaktär måste särskilt kodad enligt World Wide Web Consortium (W3C). W3C rekommenderar därför att paren separeras med ett semikolon ( ;).

Säkerhetsrisker

Eftersom frågesträngen är en del av webbadressen kan den ses och ändras av varje Internetanvändare i webbläsaren . I en webbapplikation bör därför endast icke-kritiska parametrar infogas i frågesträngen, till exempel posten i ett sökfält.

Tekniska begränsningar

Om en större mängd data måste överföras är det lämpligt att inte överföra den via webbadressen, utan i meddelandetexten med HTTP -metoden POST , eftersom vissa begränsningar gäller för webbadresser:

  • Av kompatibilitetsskäl rekommenderar HTTP -specifikationen en maximal storlek på 255 byte för webbadresser eller URI: er .
  • Den Internet Explorer stöder inte webbadresser som består av mer än 2,083 tecken.
  • Webbservrar kan själva begränsa den maximala längden på en frågesträng. Om denna gräns överskrids skickar servern HTTP -statuskoden 414 tillbaka till klienten.
  • Den (under tiden föråldrade) HTML 3 -specifikationen föreskriver en maximal längd på länkmål på 1024 tecken. Denna begränsning gäller inte längre från HTML 4.

Se även

Individuella bevis

  1. T. Berners -Lee, R. Fielding, L. Masinter:  RFC 3986  - Uniform Resource Identifier (URI): Generic Syntax . [Fel: RFC 3986 ]. Januari 2005. Avsnitt 3.4: Fråga.  Standard: [66]. (Ersätter RFC 2732 , RFC 2396 , RFC 1808 - Uppdaterad av RFC 6874 , RFC 7320  - engelska).
  2. 17 blanketter. 17.13.4 Forminnehållstyper. I: HTML 4.01 -specifikation. World Wide Web Consortium (W3C), 27 mars 2018, öppnade 27 november 2019 .
  3. ^ W3C-rekommendation för att separera nyckel-värdepar
  4. HTTP / 1.1 -specifikation
  5. http://support.microsoft.com/kb/208427
  6. HTML 3 -specifikation