Dnes jsem se potýkal s různými předdefinovanými proměnnými na serveru a jelikož jsem nikde na internetu nemohl nalézt jejich seznam s popisem, rozhodl jsem se ho udělat sám.

Tyto proměnné korespondují s hlavičkami a skrývá se pod nimi mnoho užitečných informací, které jistě dokážete nějakým způsobem využít (nebo je již využíváte). Nad každým odstavcem uvádím název proměnné, avšak jelikož je na většině hostincích zapnuto registr globals, přistupujte k nim pomocí $_SERVER[proměnná]. Zde máte jejich seznam s popisem, lze je využít jak v PHP tak v ASP.

AUTH_TYPE

Hodnota této proměnné prostředí závisí na druhu ověření použitého serverem a na tom, zda je skript chráněn serverem. To se týká nastavení serveru a závisí na jeho druhu a také na použitém protokolu. Tato hodnota nemůže být definována, pokud stránka není zabezpečená. Pokud je zabezpečená, hodnota indikující druh ověření může být nastavena až po ověření uživatele. Příkladem hodnoty AUTH_TYPE je BASIC.

CONTENT_LENGTH

Pokud požadavek použil metodu POST, mohou být další informace uvedeny v těle. Tato je předána interpretu CGI na jeho standardní vstup. Samozřejmě, ScriptEase se vám přizpůsobí, extrahuje případné řetězce dotazu z těla a dekóduje je do proměnných pro konvenční přístup k nim.

CONTENT_TYPE

Datový druh nějakého obsahu přeneseného v těle požadavku. Pomocí něj můžete zpracovat standardní vstup ze součástí obsahu, které jsou jiného druhu než data formuláře. Toto je relativně neprozkoumaná oblast, a proto může hodně záviset na serveru a jeho platformě. Pokud to funguje, můžete si zvolit čtecí mechanismus založený na druhu obsahu a pak použít ostatní hlavičky pro zpracování binárních dat v těle. Pro přenos souborů na server je lepší použít HTTP/1.1, které podporuje metodu PUT, jež je lepší technikou a je zpracována uvnitř serveru.

DOCUMENT_ROOT

Toto je plná cesta ke kořenu dokumentů webového serveru. Pokud jsou používání virtuální hostitelé a pokud sdílí některé skripty CGI, může být kořen dokumentů pro každého virtuálního hostitele jiný. Pokud sídla opravdu úzce nesouvisí, je dobré udržovat adresáře cgi-bin oddělené. Například webové sídlo s obrázky a webové sídlo s hrami by mohly mít oddělené adresáře cgi-bin. Tři rozdělené verze sídla s obrázky mohou mít jiné kořeny dokumentů, ale společný adresář cgi-bin. Na některých serverech to může způsob identifikace toho, který virtuální hostitel je používán.

FROM

Pokud uživatel patřičně nakonfiguroval svůj prohlížeč, bude tato proměnná prostředí obsahovat jeho e-mailovou adresu. Pokud je uvedena, je to dobrý způsob identifikace uživatele, samozřejmě za předpokladu, že je majitelem počítače, který používá.

GATEWAY_INTERFACE

Můžete určit číslo verze použitého rozhraní CGI. Toto by mohlo být užitečné pokud jste závislí na funkcích dostupných v pozdější verzi rozhraní CGI, ale chcete spravovat jediný skript používaný ve více prostředích.

HTTP_ACCEPT

Toto je seznam přípustných typů MIME, které prohlížeč bude akceptovat. Tyto hodnoty závisí na použitém prohlížeči a na tom, jak je nastaven a jsou jednoduše předány webovému serveru. Pokud chcete být obzvláště chytří a udělat dobrou věc, zkontrolujte tuto hodnotu dříve, než se pokusíte vrátit neodpovídající data jiná než čisté HTML. Prohlížeč tím říká, s čím si umí poradit a pokud se pokusíte odeslat nějaká neočekávaná data, můžete způsobit kolizi u uživatele.

HTTP_ACCEPT_LANGUAGE

Zde nesmí být hodnota uvedená v proměnné prostředí. Pokud zde je, bude seznam definován prohlížečem.

HTTP_CONNECTlON

Toto bude indikovat dispozici spojení HTTP. Mohlo by obsahovat hodnotu "Keep-Alive" nebo "Close", ale skutečně, z pohledu CGl řízeného ScriptEase:WSE, nemáte žádné možnosti. Možná budete potřebovat vědět, zda spojení s prohlížečem zůstane otevřené, ale jelikož SE:WSE nyní nebude podporovat triky s datovými proudy, nebude to podstatné.

HTTP_COOKIE

Hodnoty cookie odeslané zpět prohlížečem jsou shromážděny a všechny dostupné společně v této proměnné prostředí. Budete muset rozdělit jednotlivá cookie a extrahovat jejich hodnoty. Která cookies obdržíte závisí na kořenu dokumentů sídla a na ostatních vlastnostech cookies.

HTTP_HOST

Na webovém serveru s více virtuálními hostiteli bude obsahovat název hostitele, který byl použit v požadavku. Můžete pak přizpůsobit výstup tak, aby odpovídal různým variacím sídel. Např. můžete prezentovat jiná loga a pozadí v www.domena.cz a test.domena.cz. Může vám pomoci vyřešit hodně problémů, když nastavíte označující rozdělení pro prezentaci vašeho obsahu skrze více portálových sídel.

HTTP_PRAGMA

Toto je něco v této chvíli neschváleného, ale bude pravděpodobně obsahovat hodnotu "no-cache". Řízení mezipaměti je zpracováno flexibilněji v nových záhlavích odpovědí dostupných v HTTP/1.1. Ukládání do mezipaměti a činnost serveru proxy se mohou stát komplexnějšími. Více informací naleznete na google :).

HTTP_REFERER

Toto je kompletní URL stránky, která byla zobrazena v prohlížeči a z níž vedl odkaz na naši stránku, který vyvolal daný požadavek. Pokud byl stránkou vyhledávací mechanismus, také může obsahovat některé zajímavé informace dotazu, které byste mohli extrahovat a dozvědět se tak, jak lidé našli vaše webové sídlo. Existují některé situace, kdy bude toto záhlaví prázdné. Např. když uživatel napíše URL do pole adresy. Toto záhlaví může být prázdné také když odkaz na naše sídlo vedl ze souboru uloženého v počítači uživatele. Také existují některé problémy, které závisí na druhu prohlížeče. Některé verze programu Internet Explorer od firmy Microsoft nepodávají toto záhlaví, když odkaz vede ze stránek s rámy. Pokud máte informace v tomto záhlaví, může to být užitečné, ale jindy může být toto záhlaví prázdné.

HTTP_USER_AGENT

Toto záhlaví obsahuje zkrácený název prohlížeče. Je to nezbytné, protože stránka nemusí být vždy vyžádána prohlížečem. Může být také vyžádána robotem. Také může být vyžádána programy pro prohlížení obsahu offiine nebo monitorujícími službami a u generátoru statických stránek není neobvyklé, že se používají v sídle, které bylo původně navrženo jako dynamické. Raději, než počítat se všemi variantami prohlížečů, byste se měli zaměřit na určení toho, zda o vaše stránky žádá prohlížeč nebo robot Tímto způsobem můžete, když je to nutné, poskytovat stránky určené robotům. Můžete stránky například učinit atraktivnějšími pro komunitu uživatelů, kteří používají např. pouze textové prohlížeče, jako je např. Lynx. Pak byste místo toho poskytovali graficky horší stránky, ale bohaté na text. Když sledujete toto, mějte na paměti, že v hodnotách vracených některými prohlížeči existují určité zvláštnosti. To může být záměrné nebo náhodné, ale jelikož byly uvolněny zdrojové kódy Netscape, vývojáři začali vyvíjet přizpůsobené prohlížeče. Některé z nich odešlou záhlaví User-Agent obsahující řídící znaky a binární data. I když je to pokus o využití chyb webových serverů, prostředí CGI nebo software pro analýzu protokolů od toho odrazují. V tomto záhlaví se setkáte s emailovými adresami, adresami URL, instrukcemi příkazového řádku a dokonce s celými webovými stránkami.

PATH

Toto je seznam adresářů, ve kterých se budou hledat příkazy, které můžete zkoušet a provádět v mechanismu CGI. Ten je odvozen od nadřazeného prostředí, které tento mechanismus vytvořilo. Je závislý na platformě a používá se v unixových systémech. V ostatních se vyskytovat nemůže.

PATH_INFO

Toto je způsob extrahování dalších informací o cestě z požadavku. Např. URL: http://www.domena.cz/cgi-bin/cesta.jsh/slozka1/soubor. Vyvolá skript SE:WSE, který se nazývá cesta.jsh a v proměnné prostředí PATH_INFO uchovává hodnotu /slozkal/soubor. Toto může být dalším způsobem předávání parametrů ze stránky HTML do skriptu na straně serveru.

PATH_TRANSLATED

Toto záhlaví je implementováno pouze v některých serverech a na jiných může být implementováno pod jinak nazvanou proměnnou prostředí. Vrací celou fyzickou cestu k prováděnému skriptu. To by mohlo být užitečné pokud máte sdílený kód, který vkládáte do více skriptů.

QUERY_STRING

Řetězec dotazu je ten text, který je v URL uveden za otazníkem. SE:WSE jej bude rozdělovat po jednotlivých prvcích do proměnných, ke kterým máte přímý přístup.

REMOTE_ADDR

Toto je vzdálená adresa IP počítače klienta, která vyvolala požadavek. Mohli byste ji použít pro řízení toho, co bude zobrazeno nebo pro zamítnutí přístupu klientům, kteří nepatří do vaší domény.

REMOTE_HOST

Tato hodnota bude možná prázdná. Vyžaduje, aby webový server přeložil adresu IP pomocí DNS na název. Zda to bude dělat závisí na tom, jestli je uživatelův počítač uveden v databázi DNS. Toto záhlaví je často vypnuté, protože má za následek výrazné snížení výkonu, protože webový server musí provádět vyhledávání v DNS při každém požadavku a základem všeho čas je čas.

REMOTE_IDENT

Toto je neschválená funkce. Závisí na tom, zda klient i server podporuje RFC 931, jelikož koncový uživatel může nastavit hodnotu jak chce,tak šance, že to bude nějak užitečné, je opravdu malá. Samozřejmě, v odděleném intranetu, který můžete lépe řídit, byste to použít mohli.

REMOTE_USER

Pokud byl uživatel ověřen a splnil kritéria, bude tato proměnná obsahovat ověřené uživatelské jméno. Jinak budou tato proměnná a AUTH_TYPE pravděpodobně prázdné. Když je požadován dokument z nezabezpečené oblasti, může být tato hodnota prázdná dokonce i po ověření.

REQUEST_METHOD

Toto je metoda požadavku HTTP. Pravděpodobně zde najdete pouze POST nebo GET. Obvykle nebudete potřebovat jiné verze dokumentů založených na této hodnotě, ale mohlo by to být důležité pro ověření toho, zda byl přístup proveden korektně a ze stránky s korektní metodou. Mimo velikosti dat, která jsou větší u POST, existuje další rozdíl mezi GET a POST. Použití GET více než jednou by mělo mít za následek stejný výsledek. Stejné použití POST bude mít za následek vytvoření více transakcí. Například zadání objednávky více než jednou pomocí nového odeslání formuláře. Toto je jediný moment, kdy tlačítko Zpět pracuje proti vám a kdy budete chtít toto zablokovat ve vašem kódu, abyste zabránili duplicitním finančním transakcím. Měli byste si být vědomi toho, že toto se děje, když prohlížeč zobrazí varovnou zprávu, ve které se ptá, zda chcete znovu odeslat stejná data formuláře.

SCRIPT_FILENAME

V podstatě totéž jako proměnná prostředí PATH_TRANSLATED. Představuje plnou cestu k prováděnému skriptu. Jakmile stanovíte kterou z proměnných bude váš server používat, měli byste s ní vystačit.

SCRIPT_NAME

Toto je logický název skriptu. Normálně je to část URI požadavku na adresu URL, která byla původně odeslána. Je to plná cesta ke skriptu bez kořene dokumentů a bez mapováni aliasu skriptu. Může být přenositelné mezi různými virtuálními hostiteli, což hodnoty SCRIPT_FILENAME/PATIH_TRANSLATED nemohou. Užitečné také při vytváření přenositelných skriptů. Tuto hodnotu můžete použít pro nové sestavení formuláře tak, aby volal znovu stejný skript. Výsledkem je pak to, že skript neobsahuje pevnou cestu, kterou by bylo třeba po přesunutí nebo přejmenování upravovat.

SERVER_ADMIN

Pokud je nastaveno, je v této proměnné obsažena emailová adresa správce serveru. Měli byste ji použít v zabezpečovacích mechanismech, abyste správce upozornili na detekovaný potenciální průlom. Buďte opatrní, abyste nezahrnuli správce serveru tisíci zpráv.

SERVER_NAME

Toto je název serveru a v některých systémech může být ekvivalentní hodnotě HTTP_HOST. Může být užitečný při vytváření odkazů někam jinam v rámci sídla nebo při detekováni názvu sídla, abyste mohli vytvářet různé verze stránky pro různá sídla.

SERVER_PORT

Zde je uloženo číslo portu, na který přišel požadavek. Většina webových sídel pracuje na portu 80. Ty, co nemohou být pokusnými sídly nebo mohou pracovat uvnitř firewallu. Pomocné servery mohou pracovat na jiných číslech portů, když běží na stejném počítači jako hlavní webový server. Většina webových serverů umožňuje nastavení čísla portu. V případě webového serveru Apache můžete nastavit na odlišné porty jednotlivé virtuální hostitele. To znamená, že byste mohli vyvinout pokusné sídlo a tuto hodnotu použít pro aktivování dalšího ladění, které bude na hlavním sídle vypnuté.

SERVER_PROTOCOL

Toto je verze protokolu zpracovávaného požadavku. Tato oblast je ve specifikacích a vydaných knihách lehce nejednoznačná. Prohlížeč může indikovat preferovaný protokol, kterému se může přizpůsobit. Toto je hodnota, kterou dává na řádek požadavku. Samozřejmě, server může tuto hodnotu ignorovat a zpracovat požadavek s podmnožinou funkci, které odpovídají dřívější úrovni protokolu. Konfigurace serveru může určit shodu prohlížeče a interně ji ignorovat nebo může být požadavek zpracován protokolem HTTP/1.0 i když prohlížeč indikuje, že umí pracovat s protokolem HTTP/1.1. Z pohledu skriptování CGI je nepravděpodobné, že byste potřebovali podle této hodnoty vytvářet různé verze stránky. Můžete podle toho určovat, zda máte používat média s datovými proudy, ale tato technika není v SE:WSE aktuálně nijak podporována.

SERVER_SOFTWARE

Například Apache/1.3.6, ale závisí na serveru.

UNIQUE_/D

Toto je dostupné v prostředích CGI běžících pod webovým serverem Apache, který byl sestaven s modulem unique_id. Mohli byste si zvolit první z nich, který přijde v relaci a použít jej potom jako klíč relace jako jiný alternativní způsob generování unikátních klíčů relací. Mohlo by také poskytovat některé užitečné možnosti sledování uživatelů.

Doufám, že jste našli co jste hledali.

zdroje: publikace Programujeme PHP profesionálně, PHP manuál + nějaké fóra.

nekomentováno

Neváhejte napsat k článku komentář

Nevyplňujte: