Existují dva koncepty, které jsou společné pro téměř všechny programy - to je zpracování vstupních dat a výstupního výstupu. Na této stránce se zaměřujeme na zpracování položky programu CGI. Za prvé, kde vstupní data pocházejí, a za druhé, protože vstupní data jsou přenášena na server. Chcete-li psát efektivní programy CGI, musíte mít jasnou představu o těchto věcech.
Trochu o http
Server obdrží tři typy požadavků: dostat, post a hlavu. Požadavek na program na webový server je následující:
Získejte /index.html http / 1,0
První část tento případ Získání je metoda dotazu, druhá, index.html, je požadovaná adresa URL, třetí, http / 1.0, protokol používaný klientem.
Dva hlavní metody dotazu jsou dostanete a post. Jedná se o většinu metod, které jsou k dispozici při vytváření formuláře. Metoda hlavy je zřídka používána prohlížečem, protože požádá pouze titulu reakce a tělo odezvy není v tomto případě přenášeno. Chcete-li například ověřit, zda se stránka nezměnila, prohlížeč může požádat název, ale nevytváří plnohodnotnou výměnu dat.
Získat metodu
Ve výchozím nastavení se metoda GET používá při požadavku. Metoda příspěvku se používá pouze v případě, že je jasně uvedena v žádost formuláře. Pro programátor CGI je velmi důležité pochopit, že při požadavku na metodu GET jsou tyto formuláře přenášeny na server spolu s URL. CGI podpora webových serverů Zkopírujte tato data do proměnné prostředí s názvem Query_String. Poté se týkají programu Získání údajů z proměnné životního prostředí a jejich zpracování je přiřazen k programu CGI.
URL z řetězce dotazu vypadá takto:
Http://www.domen-name.com/login.pl?nick\u003dmaks&psw\u003dparol.
Podepsat? odděluje řetězec dotazu z adresy URL zdroje; Nick a PSW - proměnné přenášené na server, MAKS a PAROL - jejich hodnoty, resp.
Post Metoda
Metoda příspěvku se používá, když je explicitně uvedena v atributu formuláře metody. Na rozdíl od metody GET, pošta umístí data ne v adresáři URL, ale v těle dotazu. Příspěvek dotaz je z velké části podobný reakci HTTP. První řádek je standard dotaz http.ve kterém je zadána metoda příspěvku. Může mít potřebné další titulky oddělené od těla žádosti prázdným řetězcem.
Tělo dotazu při použití metody POST je přenášen do programu jako standardní vstupní proud.
Volba mezi dostat a post
Je jasné, že při vývoji forem před programátorem CGI bude otázka následující: Která z těchto metod platí. Ve většině případů jsou použitelné obě metody a oba budou fungovat dobře. Existují však situace, kdy použití jedné nebo jiné metody poskytuje určité výhody.
Zvažte několik situací, kdy má smysl preferovat metodu získat nebo post.
- Pokud chcete, aby váš program byl nazýván odkazem, předvolba by měla být zadána metoda GET.
- Pokud nechcete, aby argumenty přenášené váš program byl zaznamenán v souboru sestavy serveru, použijte metodu POST. Pokud například formulář vyžaduje zadávání uživatelského jména a hesla, je nepravděpodobné, že chcete, aby se jména a hesla uložena do souboru sestavy. Kromě toho není rozumné předat heslo jako součást adresy URL.
- Pokud má váš formulář významné velikosti, není to textové pole s poznámkami a připomínkami, měla by být použita metoda příspěvku. Obecně řečeno, je možné a v tomto případě použijte metodu Získat, ale pak se můžete setkat s omezením velikosti URL, liší se pro různé operační systémy a prohlížeče (omezení vzhledem k velikosti proměnných prostředí). Je snazší použít metodu POST.
- Pokud váš formulář obsahuje pole souboru, použijte metodu POST. Kromě toho v tomto případě musíte nastavit hodnotu atributu ENCYPE v multipartových / formulářových datech.
Klienti prohlížeče mohou odesílat informace na webový server.
Než prohlížeč odešle informace, kóduje jej pomocí schématu nazvaného kódování URL. V tomto schématu se název / hodnota kombinuje se stejnými značkami a různé dvojice jsou rozděleny ampersandem.
Jméno1 \u003d Value1 & Name2 \u003d Value2 & Name3 \u003d Value3
Prostory jsou odstraněny a nahrazeny symbolem A + a jakékoli jiné ne-alfa číselné znaky jsou nahrazeny hexadecimálními hodnotami. Po zakódování informací přejde na server.
Získat metodu
Získat metodu odesílá kódované informace o uživateli přidané do požadavku stránky. Stránky a kódované informace jsou od sebe odděleny? podepsat otázku.
http://www.test.com/index.htm?name1\u003dvalue1&name2\u003dvalue2.
- Získejte metodu vytvoří dlouhý řetězec, který se zobrazí v protokolech serveru v poli "Umístění" prohlížeče.
- Získejte metodu je omezena pro odeslání pouze 1024 znaků.
- Pokud máte heslo nebo jiné důvěrné informace, nikdy nepoužívejte metodu GET, pokud máte heslo nebo jiné důvěrné informace, které chcete odeslat na server.
- Získat nelze použít k přenosu binárních dat, jako jsou obrázky nebo textové dokumenty na server.
- Přístup k datům odeslaným metodou GET lze získat pomocí proměnné prostředí Query_String.
- PHP poskytuje asociativní $ _get pole pro přístup ke všem odeslaným informacím pomocí metody GET.
pokud ($ _ dostat ["Jméno"] || $ _get ["Vítejte". $ _get ["Jméno"]; echo "Jste." $ _GET ["AGE"]. "AGE"]. ;)
Post Metoda
Metoda POŠTA. Odesílá informace prostřednictvím http titulky. Informace jsou kódovány tak, jak je popsáno v případě metody Dostat.a umístěny v názvu Řetězec dotazu..
- Metoda příspěvku nemá žádná omezení velikosti dat, které chcete odeslat.
- Způsob příspěvku lze použít k odeslání ASCII, stejně jako binárních dat.
- Data odeslaná poštou procházejí hlavičkou HTTP, takže bezpečnost závisí na protokolu HTTP. Použití zabezpečeného http, můžete se ujistit, že vaše informace jsou chráněny.
- PHP poskytuje asociativní $ _POST pole pro přístup ke všem odeslaným informacím pomocí metody POST.
Vyzkoušejte následující příklad umístěním zdrojového kódu do skriptu test.php.
pokud ($ _ příspěvek ["Jméno"] || $ _Post ["věk"]) (pokud (Preg_match ("[^ A-ZA-Z-Z" -] ", $ _ Post [" Jméno "])) (umírají) ("Neplatný název a jméno by měly být alfa");) echo "welcome". $ _Post ["Jméno"]; echo "Jste. $ _Post [" věk "]." EXIT ();)
Proměnná $ _request.
PHP proměnná $ _REQUEST. Obsahuje obsah AS. $ _Get., $ _POST., takže I. $ _Cookie.. Diskutujeme o proměnné $ _Cookie.Když říkáme o cookies.
Proměnná PHP $ _Request lze použít k získání výsledku z dat formulářů odeslaných pomocí metod GET a POST.
Společný mezi nimi, skutečnost, že pracují stejně. Rozdíl mezi nimi je technicky ne. Ale existují ideologické rozdíly.
Řeknu o nich v kontextu PHP. Upozorňujeme, že protokol HTTP k PHP má nepřímý přístup, protože byl vytvořen pro výměnu hTML stránky A PHP jednoduše rozšiřuje možnosti a druhý.
Získejte dotaz se používá k získání dat za příspěvek k odeslání. (Připomínám vám, že technicky funguje stejně).
Proto v kontextu PHP se spoléhla na tuto ideologii následovně:
1. Každý čas je spuštěn PHP, SuperGlobal Arrays ($ _get, $ _POST) jsou standardně vytvořeny.
2. Pokud dojde k otazník v řetězci dotazu (?). Pak je vše považováno za to parametry Získejte požadavky, které jsou uvedeny v "Key" Format \u003d "hodnota" a jako separátor se používá znaménko ampersandu (&)
Příklad:
Získejte /index.php?Name\u003dandrey&surname\u003dhalkin.
Jedná se o řetězec dotazu, zde 2 parametry. Tyto parametry budou spadat do pole $ _GET.
3. $ _POST je naplněn jiným způsobem. Obsah tohoto pole je vyplněn z "záhlaví požadavku". To znamená, že od místa skrytého před očima explicitně. Celá rutina vytvářet takové titulky vezměte v prohlížeči. I když se někdy něco upraví v titulcích.
Nejčastěji se požadavek na příspěvek používá ve formulářích (posílat data).
Například máme formulář pro přihlášení k přihlášení 2 polí.
Představte si, že používáme metodu GET. Poté, když odesíláte formulář, obracíme se na následující adresu /Login.php?login\u003dAndrey&password\u003d123 souhlasíte s tím, že tyto informace není bezpečné. Každý, kdo může otevřít prohlížeč a začne se zadat adresu webu. Vidí vaše hesla a přihlášení.
Pokud jsme však stanovili metodou post, pak bychom získali následující žádost:
Post /login.php (Login \u003d Andrey & Password \u003d 123) Co by bylo v závorkách skryté a ne uložené v prohlížeči.
Obecně, shrnout:
Získat je získat určitou stránku ve specifickém formuláři (třídění, aktuální stránka v blogu, vyhledávací řetězec atd.).
Příspěvek - pro data trnu, která nemá vliv na zobrazení stránky, tak, aby tato data ovlivňovala výsledek spuštění skriptu (přihlašovací údaje, hesla, čísla kreditních karet, zpráv atd.).
A další dobrá zpráva lze kombinovat například
Post /index.php?page\u003dlogin (Login \u003d Andrey & Password \u003d 123) Myslím, že jsem již vysvětlil dost, že se to dopustí a jaké parametry, kterému do kterého pole padne.
Moderní webové zdroje neposkytují návštěvníkům pouze informace, ale také s ním interagují. Chcete-li komunikovat s uživatelem, musíte od něj obdržet některé informace. Existuje několik metod pro získání dat, velmi běžných metod. Dostat. a POŠTA.. A resp. B. Php. Pro tyto metody přenosu dat je podpora Dostat. a POŠTA.. Podívejme se, jak tyto metody fungují.
Získat metoduData dOSTAT. Přenos přidáním do adresy URL volaného scénáře určeného pro zpracování přijatých informací. Pro vysvětlení tato metoda Vytočte adresu URL prostředku do panelu Adresa v panelu Adresa a nejprve přidejte otazník (?), A potom číslo num \u003d 10. například
http: //domure.ru/script.php? num \u003d 10
Pokud máte místní server, pak obvykle doména bude localhost a pak bude předchozí záznam vypadat
http: //localhost/script.php? num \u003d 10
V tomto případě vysíláme parametr num na 10. Chcete-li přidat následující parametry, musí být skript použitelný například ampersant (&), například
http: //domure.ru/script.php? num \u003d 10 & typ \u003d nová & v \u003d text
V tomto případě jsme přenesli tři parametry do skriptu: num s hodnotou 10, zadejte hodnotu "Nový" a V s hodnotou "Text".
Chcete-li tyto parametry v skriptu, musíte použít vestavěné pole. $ _Get. $ _Get ["num"], $ _get ["typ"], $ _ dostat ["v"]. Tyto prvky pole budou obsahovat hodnoty přenášených parametrů. Chcete-li tento příklad ukázat, vytvořte soubor Script.php následujícím způsobem.
echo ($ _get ["num"]. "
");
echo ($ _get [typ "]."
");
echo ($ _get ["v"]);
?>
A nyní zavolejte tento soubor v prohlížeči
http: //at/script.php? num \u003d 10 & typ \u003d nová & v \u003d text
a zobrazí se vysílané parametry v okně prohlížeče. Ale pokud zavoláte tento soubor bez další parametry http: /////script.php, uvidíte chyby, které budou poskytovat tlumočníka Php.Že neexistují žádné takové prvky pole $ _get. Kontrola těchto dat z uživatele lze zvýraznit ne jeden článek, takže v tomto článku se tohoto okamžiku nedotýkám.
Jak již chápete, přinutit uživatele k vytáčení dat v adresním řádku není příliš dobré a zcela nepohodlné. Proto přijímat data od uživatele, které potřebujete použít formulář HTML. Napište jednoduchý html -form.
Komentuji k vytvořenému formuláři. Formuláře jsou vytvořeny značkou formuláře. Pole Formy jsou vytvořeny vstupem, výběrem, TextArea tagy (můžete si přečíst více). V značce formuláře je adresa URL skriptu zadán v atributu akce, který tyto formuláře obdrží. V našem případě jsme již zadali již existující soubor Script.php. Atribut metody nastaví metodu odesílání dat. Ukázali jsme metodu Dostat.. Nyní víme, jaký soubor bude tento soubor přenášen, a jakým způsobem zůstane zjistit, kde je hledat?!
Tato data formuláře budou přenesena do prohlížeče webového prostředku přidáním do adresy URL: bude nejprve otazník (?), Poté jsou parametry odděleny ampersantem (&). Název parametru bude převzat z atributu Název, který musí být napsán z libovolného pole pole. Hodnota parametru bude záviset na typu pole. Pokud je pole textové, text zadaný uživatelem bude uživatel. Pokud bude pole seznam, skupina přepínačů nebo příznaků, pak hodnota hodnoty hodnoty vybrané položky bude hodnota parametru. Vysvětlím příklad naší formy. Pokud uživatel zadá číslo 10 ve vstupním poli, bude název parametru num (hodnota atributu názvu vstupního tagu) a hodnota bude hodnota (uživatelsky zadané číslo). Proto prohlížeč bude tvořit pár "num \u003d 10". Pokud uživatel ze seznamu vybere možnost "Ano", pak bude název parametru typ (atribut hodnoty volby názvové značky), a hodnota bude hodnota (hodnota hodnoty volby hodnota ). Prohlížeč se tedy vytvoří pár "typu \u003d ano".
Tento formulář bude nyní umístěn na stránce Forma.php.
Zadejte všechny hodnoty v polích formuláře a klepněte na tlačítko "Odeslat". Po stisknutí tlačítka prohlížeče otevřete jinou stránku (Script.php) a zobrazí se data, která zadaná okno prohlížeče budou zobrazeny. Myslím, že je jasné, proč: Prohlížeč přenášet data do skriptu Script.php a ve skriptu budou tyto údaje zpracovávány a zobrazeny.
Post MetodaPodívejme se nyní, jak metoda funguje POŠTA..
Poslat tyto metody POŠTA. Musíte použít HTML-Formulář. Jak si pamatujeme, že způsob formuláře je zodpovědný za způsob odeslání formuláře formuláře dat. Proto musíte zadat hodnotu příspěvku v atributu metody. V opačném případě může být formulář stejný jako pro metodu GET. Změníme náš tvar, který jsme již používali k přenosu dat do metody GET pro přenos metodou POST.
Jak vidíte, formulář zůstává stejný s výjimkou atributů metody a akce. Nyní budou data předána skriptu Script_Post.php. Umístěte náš formulář na stránce Forma_Post.php.
Nyní musíte napsat skript, který bude zpracovávat naše formuláře dat.
Chcete-li získat přenášenou metodu v datovém skriptu POŠTA. Potřebujete používat vestavěné pole $ _POST.. Klíče tohoto pole budou názvy parametrů. V našem případě musíte použít $ _Post ["num"], $ _Post ["typ"], $ _ příspěvek ["v"]. Tyto prvky pole budou obsahovat hodnoty přenášených dat. Jak vidíte rozdíl od použití metody Získat, je vyjádřen pouze při použití pole $ _POST. Proto nebudeme obtížné napsat soubor Script_post.php:
echo ($ _Post ["num"]. "
");
echo ($ _Post [typ "]."
");
echo ($ _Post ["v"]);
?>
Nyní otevřete soubor forma_post.php v prohlížeči. Zadejte některá data do pole formuláře a stiskněte tlačítko "Odeslat". Nyní, pravděpodobně jste si všimli rozdíl mezi metodou příspěvku z Get - tyto formuláře se neobjevily v adresním řádku prohlížeče. Metoda dat POŠTA. Nelze projít adresním panelem prohlížeče. Tento základní rozdíl musí být zapamatován.
V Php. V nezávislosti byla data metody odeslána - metodou příspěvku nebo metodou ZÍSKAT - získání dat pomocí pole $ _Request. Porovnání metod získávání a postPři použití metody GET jsou data přenášena přidáním do adresy URL. Budou tedy viditelné pro uživatele, že z hlediska bezpečnosti není vždy dobré. Maximální množství přenášených dat bude také záviset na prohlížeči - z maximálního přípustného počtu znaků adresního panelu prohlížeče.
Při použití metody POST, data nebudou pro uživatele viditelná (není zobrazena v adresním řádku prohlížeče). A tedy jsou chráněny více chráněny, a proto program zpracování těchto dat je více chráněno z hlediska bezpečnosti. Také množství přenášených dat není prakticky omezeno.
Při výběru způsobu přenosu dat je třeba zvážit vlastnosti uvedené a zastavit za nejpřijatelnější metodou.
Forma html. Arrays $ _Post a $ _get
Forma html. Metody odesílání dat na server
S HTML-Formuls jste pravděpodobně již splnili:
Uložení tohoto kódu v souboru HTML a prohlížení s vaším oblíbeným prohlížečem zobrazí se obvyklý formulář HTML:
Štítek
Vlastně se ptá formulář. Jeho atributy jsou volitelné:- akce - označuje adresu URL (plné nebo relativní), ke kterému bude formulář odeslán. Pokud tento atribut nezadáte, většina prohlížečů (přesněji řečeno, všechny prohlížeče známé mi) pošlete formulář do aktuálního dokumentu, to je "na sebe". Toto je vhodné snížení, ale podle Standard HTML je vyžadován atribut akce.
- metoda je způsob odeslání formuláře. Existují dva z nich.
- Získejte - odesílání dat formulářů do adresního řádku.
Mohl byste si všimnout přítomnosti na konci URL symbolu "?" A následující data ve formátu parametru \u003d hodnota. Zde "Parametr" odpovídá hodnotě atributu názvu prvků formuláře (viz níže o TEG ) a "hodnota" - obsah atributu hodnoty (v něm, například obsahuje vstup uživatele do textového pole stejné značky ).
Zkuste například hledat něco v Yandexu a věnovat pozornost adresním řádku prohlížeče. Toto je metoda GET. - Post - forma Tyto jsou zasílány v těle dotazu. Pokud to není zcela jasné (nebo je zcela nejasné), co to je - Neboj se, brzy se vrátíme k tomuto problému.
- Získejte - odesílání dat formulářů do adresního řádku.
Štítek - Určuje prvek formuláře definovaný atributem typu:
- Hodnota "Text" Nastaví jedno řádkové vstupní pole
- Hodnota "Odeslat" Nastaví tlačítko, když je formulář stisknuto na server
Další hodnoty jsou možné (a - Není to jediná značka, která určuje prvek formuláře).
Co se stane, když stiskneme tlačítko "OK"?
- Prohlížeč procházení prvků obsažených ve tvaru a generuje z názvu a atributů hodnoty těchto formulářů. Předpokládejme, že jméno Vasya byl zaveden. V tomto případě tyto formuláře - NAME \u003d VASYA & OKBUTTON \u003d OK
- Prohlížeč vytvoří připojení k serveru, odešle požadavek na server zadaný v atributu ACCE TAG
- Server analyzuje přijatý dotaz, vytvoří odpověď, odešle jej do prohlížeče a zavírá připojení
- Prohlížeč zobrazuje dokument přijatý ze serveru.
Posílání stejného dotazu ručně (s telnetovou pomocí) vypadá takto (předpokládat, že doménové jméno Stránky - www.example.com):
Telnet www.example.com 80 Get /cgi-bin/form_handler.cgi?name\u003dvasya&okbutton\u003dok http / 1,0 r \\ n Hostitel: www.example.com r \\ r
Jako vy, s největší pravděpodobností již hádali, stisknutím tlačítka Odeslat ve formuláři s metodou odesílání "GET" je podobný vstupu odpovídající adresy URL (s otazníkem a data formulář na konci) v adrese prohlížeče) bar:
Http://www.example.com/cgi-bin/form_handler.cgi?name\u003dvasya&okbutton\u003dok.
Ve skutečnosti je metoda GET vždy používána při požadavku na dokument ze serveru, jednoduše zadáním adresy URL nebo kliknutím na odkaz. Použitím
Formulář v řádcích 8-12 obsahuje dvě položky: jméno a Okbutton. Atribut metody Určuje metodu poštovního formuláře, atribut akce označující adresu URL, ke kterému je formulář odeslán, je vyplněn hodnotou proměnné PHP_Self Server - adresa skriptu v tuto chvíli.
=$_SERVER["PHP_SELF"]?> - zkrácená forma záznamu echo $_SERVER["PHP_SELF"]; ?> .
Předpokládejme, že v poli název jsme zadali hodnotu Vasya a stisknete tlačítko OK. Současně prohlížeč odešle do poštovního serveru. Tělo dotazu: Jméno \u003d Vasya & Okbutton \u003d OK. PHP automaticky vyplní pole $ _POST:
$ _POST ["Jméno"] \u003d "Vasya"
$ _POST [OKBUTTON] \u003d "OK"
Ve skutečnosti hodnota "Vasya" je odeslána do prohlížeče v Urlencode-formě; Pro kódování Windows-1251 tato hodnota vypadá jako% C2% E0% F1% FF. Vzhledem k tomu, že PHP automaticky provádí potřebné dekódování, můžeme "zapomenout" o této funkci - dokud nebudete muset pracovat s dotazy HTTP ručně.
Vzhledem k tomu, že v těle dotazu jsou uvedeny pouze názvy a hodnoty, ale ne typy prvků formuláře, PHP nemá ponětí, odpovídá $ _Post ["Name"] vstupní řádek, tlačítko nebo seznam. Ale tyto informace obecně nejsou nezbytně nutné. :)
Vzhledem k tomu, že víte, co je napsáno na tlačítko Odeslat, jsme volitelné, v řádku 11 můžete odstranit atribut název, zkrátění popisu tlačítka . V tomto případě prohlížeč odešle název \u003d Vasya-Vasya.
A teď - totéž, ale pro get-ve tvaru:
pokud (ISSET ($ _ dostanete ["Jméno"]) (
Echo "
Ahoj, "$ _Get [" Jméno "]."
!" ;}
?>
V řadě 8 by bylo možné psát se stejným úspěchem
Žádné nové techniky zde nejsou používány. Dodržujte, proveďte kód, zkuste modifikovat ...
Změňte poslední příklad tak, aby uživatel nemusel znovu vyplnit pole. Chcete-li to provést, vyplňte atributy hodnoty prvků formuláře právě zadané hodnoty.
$ NAME \u003d ISSET ($ _ Post ["Jméno"])? $ _POST ["Jméno"]: "";
$ rok \u003d ISSET ($ _ Post ["rok"])? $ _Post ["rok"]: "";
Pokud (ISSET ($ _ příspěvek ["název"], $ _Post ["rok"]) (
Pokud ($ _Post ["Jméno"] \u003d\u003d "") (
Echo "Určete jméno!
"
;
) Jinak, pokud ($ _Post ["rok"]<
1900
||
$_POST
[
"year"
] >
2004
) {
Echo. "Uveďte rok narození! Platný rozsah hodnot: 1900..2004
"
;
) Jinak (
Echo "Ahoj,". $ _POST ["Jméno"]. "!
"
;
$ věk \u003d 2004 - $ _Post ["rok"];
Echo "vy. $ Věk. "let
"
;
}
Echo "
" ;
}
?>
Několik nepochopitelných řádků 4 a 5. Všechno je velmi jednoduché: Linka 4 by mohla být zaznamenána takto:
iF (ISSET ($ _ POST ["NAME"]))
$ NAME \u003d $ _POST ["Jméno"];
jINÝ.
$ Jméno \u003d "";
Může nastat otázka - proč nehodit řetězce 4-5 a ne psát:
Zadejte své jméno:
">
Zadejte svůj rok narození:
">
Skutečnost je, že pokud tyto příspěvky nejsou definovány - a bude-li formulář ještě nebyl vyplněn, - PHP vydá varování o použití neinicializovaných proměnných (a, dobře založené: Taková zpráva vám umožní rychle Najděte pevně upevněné překlepy v názvech variabilních a také varování z možných "otvorů" na místě). Můžete samozřejmě položit kód s imitátem přímo do formuláře, ale to dopadne příliš těžkopádné.
Přišla na to? A nyní se pokuste najít chybu v níže uvedeném kódu. No, ne úplně chybu, ale vady.
htmlspecialchars ()
Nenašel? Řeknu vám. Zadejte například v poli "Jméno" poli dvojité uvozovky a nějaký text, například VA "SIA. Poslat formulář a podívejte se na zdrojový kód přijaté stránky. Ve čtvrtém řádku bude něco jako :
Zadejte své jméno:
To je - nic dobrého. A pokud uživatel mazaný zadal kód JavaScriptu?
Pro vyřešení tohoto problému je nutné použít funkci htmlspecialchars (), která nahradí servisní znaky na jejich reprezentaci html (například uvozovky - on "):
$ NAME \u003d ISSET ($ _ Post ["Jméno"])? Htmlspecialchars ($ _Post ["Jméno"]): "";
$ rok \u003d ISSET ($ _ Post ["rok"])? Htmlspecialchars ($ _Post ["rok"]): "";
Pokud (ISSET ($ _ příspěvek ["název"], $ _Post ["rok"]) (
Pokud ($ _Post ["Jméno"] \u003d\u003d "") (
Echo "Určete jméno!
"
;
) Jinak, pokud ($ _Post ["rok"]<
1900
||
$_POST
[
"year"
] >
2004
) {
Echo. "Uveďte rok narození! Platný rozsah hodnot: 1900..2004
"
;
) Jinak (
Echo "Ahoj,". $ Jméno. "!
"
;
$ věk \u003d 2004 - $ _Post ["rok"];
Echo "vy. $ Věk. "let
"
;
}
Echo "
" ;
}
?>
Opakujte zkušenosti a ujistěte se, že kód HTML je nyní správný.
Nezapomeňte - funkce HTMLSPECIALCHARSHARS () musí být vždy použita, když se zobrazí obsah proměnné, ve které může být zobrazen speciální HTML.
phpinfo ()
Funkce phpinfo () je jedním z nejdůležitějších v PHP. Zobrazuje informace o nastavení PHP, hodnoty všech druhů konfiguračních proměnných ...
Proč ji zmiňuji v článku o formách? PHPINFO () - pohodlnější ladicí nástroj. PHPINFO (), mimo jiné zobrazuje hodnoty všech $ _get, $ _POST a proměnné $ _Server. Pokud tedy variabilní formy "ztracené", nejjednodušší způsob, jak detekovat, jaký je případ - použijte funkci phpinfo (). Aby byla funkce zobrazena pouze hodnoty proměnných (a nemusíte se procházet desítkami stránek), mělo by být nazýváno následovně: phpinfo (info_variables); nebo - to je naprosto stejné - phpinfo (32);
phpinfo (32);
?>
Nebo například tato situace: chcete znát IP adresu návštěvníka. Pamatujete si, že odpovídající proměnná je uložena v řadě $ _Server, ale - to nestačí - zapomněli přesně, jak se nazývá proměnná. Znovu zavolejte phpinfo (32); Hledáme vaši IP adresu v desce a najdeme ji - v řetězci $ _Server ["Remote_Addr"].