internet Okná Android
Rozbaľovať

Post a získajte požiadavky s jednoduchými slovami. Ako posielať požiadavku na požiadanie o požiadavku: Metóda Post Premenná Post v PHP Použite príklady

V tejto lekcii zvážime prenos údajov medzi formulármi a stranami. Tieto metódy sú post a dostať sa. Budeme hovoriť o sebe samostatne a podrobnejšie. Všeobecne povedané, je potrebné pre komunikáciu medzi formami. Napríklad vyplníme niektoré polia na stránke a musíme ich preniesť na inú stránku na spracovanie.

Získajte metódu v PHP

Ak chcete začať, budeme analyzovať metódu Get. Toto je, keď sa všetky premenné a ich hodnoty prenášajú priamo cez adresu. Teraz uvidíte všetko na príklade a dokonca pochopíte, ako väčšina stránok a fóra funguje.
Máme napríklad stránku HTML tohto typu:

Stránka s príkladom prenosu premenných spojenie

Pozrite si odkaz? Je komplikovaná a pozostáva z niekoľkých častí. Zaujímame sa o všetko okolo políc:
https: // - Adresa domény alebo, ako sa nazýva aj hostiteľ.
index.php. - PHP stránka, ktorá bude spracovať žiadosť.
? - Symbol separácie medzi adresou a blokom s premennými.
Ďalej sú premenné a ich hodnoty, ktoré sú oddelené symbolom. & .
názov \u003d Sergey - Názov Premenná a jeho hodnota Sergej.
aGE \u003d 22. - rovnaký, variabilný vek, hodnota 22.

Všetky demontované, teraz pozrime, ako sa spracováva v PHP, pomocou metódy Get.
Stránky index.php, ako si spomeniete, prešli sme jej:

Ak chcete začať, poradenstvo: Vždy skontrolujte premenné na správnosť: Na prázdnoch, na dodržiavanie platných hodnôt a tak ďalej. Keďže všetko je prenášané cez panel s adresou, údaje možno ľahko vymeniť a ublížiť na stránku. Teraz podľa samotného kódu: my, s pomocou, skontrolovať premenné meno a vek do prázdnoty a, ak nie sú prázdne, potom ich priviedli, a ak je prázdny, potom ho jednoducho uviedli.
Všetko je jednoduché, súhlasím? Môžete napríklad vytvoriť HTML stránku a vykonať odkazy prostredníctvom premenných v index.php na index.php a zobraziť toto alebo stránku v závislosti od výslednej hodnoty. No, budeme hovoriť o tom neskôr, v článku o vytvorení webovej stránky na PHP od nuly. Ak chcete chýbať čokoľvek, odporúčam vám, aby ste sa prihlásili na odber RSS.

PHP PHP metóda

Aby sme preukázali prácu tejto metódy, budeme potrebovať trochu viac ako jednoduchú čiaru s adresou :) Bude potrebné vytvoriť stránku HTML s plniacou formou, ale nič, budem pre vás pripravený príklad :

Stránka s príkladom prenosu premenných pomocou príspevku

Vyplňte polia pre prenos informácií:

Zadajte svoje meno:

Uveďte svoj vek:

Takže sme vytvorili stránku HTML s jednoduchou formou. Pamätajte si, že metóda post možno použiť iba vo forme.
Prvým parametrom formulára je "Metóda", definuje metódu, ktorú budeme používať na prenos. Ako by ste mohli uhádnuť, je to buď dostať alebo post. V tomto prípade, ak je nainštalovaný, potom všetky názvy polí (vo forme názvov premenných), ako aj ich hodnoty sa prenášajú odkazom, ako v časti o metóde získania. Ak je poštou nastavená, všetky názvy premenných a hodnôt budú prenášané ako požiadavka na prehliadač na webový server. To znamená, že v paneli s adresou nebudú viditeľné. V mnohých prípadoch je to veľmi užitočné. Príspevok je tiež bezpečnejší, je tiež jasné, pretože premenné s ich hodnotami už nie sú tak jednoduché upravovať, aj keď je to možné aj.

Druhým parametrom formulára je "akcia". Toto je cesta a názov skriptu, ku ktorému vysielame údaje. V našom prípade to je index.php. Táto cesta môže byť prenášaná a úplne, to znamená: Action \u003d "https://my_site.ru/index.php". Ak neurčíte hodnotu parametra "akcie", potom budú všetky informácie prenášané do hlavného skriptu, to znamená index.php index stránky vašej stránky, ktorá je pomerne logická.

Teraz získame údaje z nášho formulára. Akonáhle sme prešli v indexe.php, znamená to, že kód bude kód tejto stránky:

"; Echo" meno - "; echo $ _Post [" user_name "]; echo"
vek - "; ECHO $ \u200b\u200b_POST [" AGE "]; ECHO" ROKY ";) inak (ECHO" premenné nedosiahli. Skontrolujte všetky časy. ";)

Nezabudnite skontrolovať prázdnotu a prípustné hodnoty. Ďalej musíte objasniť, prečo sa naše premenné nazývajú užívateľ_name a vek? A pozeráte sa na polia tvaru, ktoré sme vytvorili vyššie. Vidieť tam názov vstupu \u003d Typ "User_name" \u003d "Text" ? Tu je parameter názvu a nastaví názov premennej, ktorý dostaneme s touto policou. Rovnaké s vekom. Dúfam, že je jasné. No, akvizícia premennej a jeho hodnôt prostredníctvom funkcie Post je takmer nie je odlišná od Get, ktorú sme považovali za vyššie.

Nuž, lekcia sa ukázala byť veľká, ale jedna z najužitočnejších, pretože prenos premenných medzi formami a stranami je presne interaktivita, pre ktorú používame PHP.

Mohli by ste si všimnúť, že adresy možno uvažovať o väčšine stránok:

Http: //syt/index.php? Blog \u003d 2

Tu, ani nepoznanie PHP, môžete uhádnuť, že sa na súbor odvolávame index.php. Ale čo sa deje po otázke otázky, málo ľudí vie. Všetko je celkom jednoduché: BLOG \u003d 2 Toto je oznámenie globálnej premennej "$ _get [" blog "]" s hodnotou "2". Takto, vysielam premennú na skript, ktorý je zodpovedný za výstup z databázy. Napíšte malý skript, do ktorého budete jasne vidieť:

ak (Isset ($ _ Získajte ["blog"])) (
ECHO $ \u200b\u200b_GET ["BLOG"];
}
?>

Používame prevádzkovateľ stavby () () ako stav, ktorý stojí za túto riadku:

Esset ($ _ dostať ["blog"])

isset () Umožňuje vám zistiť, či je premenná, ktorá je uvedená v zátvorkách, to znamená, že stav, ktorý som opísal v kóde, takto: ak je premenná $ _get ["blog"] potom výstup tejto premennej na obrazovke. To sa stalo:

Myslím, že globálna premenná je jasne vytvorená. $ _GET. S identifikátorom, ktorý sme oznámili v paneli s adresou ( v tomto prípade s identifikátorom "Blog")

Teraz chcem objasniť jeden okamih. Predpokladajme, že musíme deklarovať dve premenné, ako to urobiť? Prvá premenná je vyhlásená za otázku otázky "?" Druhá premenná je deklarovaná po takomto znamení "&" ( Ak chcete byť úprimný, neviem, aký znamenie ), Tu je príklad oznámenia troch premenných:

Http: //syt/index.php? A \u003d 1 & B \u003d 2 & C \u003d 3

Tu je výstupný kód:

ak (Isset ($ _ Získajte ["A"]) a ISSET ($ _ Získajte ["B") a ISSET ($ _ _ Získajte ["C"]))
ECHO $ \u200b\u200b_GET ["A"]. "
";
ECHO $ \u200b\u200b_GET ["B"]. "
";
ECHO $ \u200b\u200b_GET ["C"]. "
";
}
?>

Znie to takto:

Ak existuje globálna premenná $ _GET ["A"] a globálna premenná $ _GET ["B"] a globálna premenná $ _get ["C"] potom ich výstup na obrazovkeTu je výsledok:

Formuláre

Predtým, než pôjdeme post. Žiadosti, musíte rozobrať, aký formulár je? Prečo potrebujete? Pretože globálna premenná $ _Post ["] je vytvorená prostredníctvom formulárov. Čo je formulár? Ide o polia, ktoré majú zadať akékoľvek informácie užívateľa. Polia sú v jednom riadku, veľké polia, začiarknite políčko. Budeme analyzovať všetko v poriadku ...

Formulár je tag:


Prvky formy

Formulár má atribúty, zoznam najbežnejších:

Vytvorme formulár:


Prvky formy

Nastavil som súbor ako súbor obsluhy test.php. Vzhľadom k tomu, že je v ňom, že píšem príklady pre vás. Dal som post spôsob, ako je to tieto metódy, ktoré používajú v 99,9% prípadov. Tiež som pridelil naše formové meno - formulár

Teraz sa ponorí do sveta prvkov. Po prvé, musíte pochopiť, že takmer všetky prvky sú tag Rozdiel len v atribúte typ Tieto tagy. Dovoľte mi zoznam formulárov, ktoré ste použili:

Som si istý, že ste takéto polia nestretli, takže tu hovorí: "Žiadne komentáre"

Poďme teraz urobiť malý výcvik dotazník, s ktorým budeme ďalej pracovať. Našou úlohou je urobiť malú formu, ktorá nám povie názov výplne, podlahy, z ktorej krajiny to je, obľúbená farba a pole textu, kde užívateľ môže pridať niečo o sebe. To som urobil:

Váš priezvisko Názov Patronymic:

Vaše pohlavie:
M.
J.

Z ktorej krajiny pochádzaš



Obľúbená farba (A):

Čierny:
Červená:
Biely:
Ostatné:

O sebe:




Upozorňujeme, že takmer každá značka má atribút hodnotu.Čo je on? Zaznamenáva údaje, ktoré budete preniesť na inú stránku. Dúfam, že je to jasné

Teraz, ak spustíte tento kód v prehliadači, uvidíme nasledovné:

Formulár som použil atribút akcie. s významom test.php. To znamená, ako som už povedal, že údaje z formulára sa odosielajú do súboru test.php.

Požiadavka

Teraz napíšte PHP kód, ktorý nám umožní vidieť informácie, ktoré ste zadali. Kde sú uložené údaje? V prípade žiadosti o získanie, naše údaje ležali vo $ _get globálnej premennej]. S požiadavkou po požiadavke, údaje budú ležať v globálnej premennej $ _POST ["]. V štvorcových zátvorkách je potrebné predpísať, ako v prípade globálnej premennej, identifikátora. Otázkou je miesto, kde tento identifikátor trvá? To je dôvod, prečo je na prvkach formulára potrebná atribút! Je to tieto mená, ktoré nám slúžia s kľúčom v globálnom poli postu. No, spustime popis skriptu:

ak (Isset ($ _ Post ["Odoslať"])) (
ECHO "Úplné meno:" $ _ príspevok ["FIO"]. "
";
ECHO "Pohlavie:" $ _ príspevok ["sex"]. "
";
ECHO "Krajina bydliska:" $ _ Post ["City"]. "
";

Echo "obľúbená farba (A):
";
ECHO $ \u200b\u200b_POST ["COLOR_1"]. "
";
ECHO $ \u200b\u200b_POST ["COLOR_2"]. "
";
ECHO $ \u200b\u200b_POST ["COLOR_3"]. "
";
ECHO $ \u200b\u200b_POST ["COLOR_4"]. "
";
ECHO "O mne:" $ _ príspevok ["o"]. "


";
}
?>

Ak je napísaná podmienka, napísaná: Ak existuje globálna premenná $ _POST ["Odoslať"], potom zobrazte údaje na obrazovke. Táto globálna premenná sa vytvorí, ak kliknete na tlačidlo Odoslať, pre ktoré tento príklad vyžaduje atribút názvu v tlačidle. Môžete si celkom čudovať, prečo nie je nutný názov atribútu? Všetko je celkom jednoduché. Zvyčajne programátor nezobrazí stlačenie tlačidla a sleduje odoslané údaje. Pre správnu operáciu, napríklad kontaktný formulár, musíte sledovať bez stlačenia tlačidla, ale správnosť vstupu informácií a naučiť sa, či boli tieto informácie zavedené vôbec. V našom príklade sme nekontrolovali odoslané údaje a jednoducho cestovali, aby sme stlačili tlačidlo, aby ste zjednodušili príklad ... to bolo to, čo sme urobili:

Záver

No, pre dnes sme rozobrali dve metódy prenosu dát medzi skriptmi a gallopamoznámom s formulármi. Naozaj dúfam, že tieto informácie máte aspoň niekde užitočné. Ak máte akékoľvek otázky alebo myšlienky, písať komentáre. Veľa šťastia, dnes mám všetko!

P.S.: Chcete počítačové hry ešte realistickejšie? DirectX 11 pre Windows 7 Môžete si stiahnuť zadarmo na Windows In! Užite si nádhernú grafiku!

Tento príspevok je odpoveďou na otázku uvedenú v komentároch k jednému z mojich článkov.

V článku chcem povedať, čo sú HTTP metódy dostať / post / dajte / dajte / vymazať a iné, pre ktoré boli vynájdené a ako ich používať v súlade so zvyškom.

Http.

Čo je teda jeden z hlavných internetových protokolov? Pedanti posielajú RFC2616, a zvyšok bude hovoriť o ľudskom jazyku :)

Tento protokol opisuje interakciu medzi dvoma počítačmi (klient a server), postavený na databáze správ, nazývaná požiadavka) a odpoveď (odpoveď). Každá správa sa skladá z troch častí: štartová čiara, titulky a telo. V tomto prípade je povinná iba východisková čiara.

Východiskové čiary pre žiadosť a reakciu majú iný formát - zaujímame sa len o štartovaciu čiaru dotazu, ktorá vyzerá takto:

Metóda URI Http / Verzia. ,

Tam, kde je metóda len metóda HTTP Query metóda, URI je identifikátor zdrojov, verzia je verzia protokolu (aktuálne aktualizovaná verzia 1.1).

Headers sú súborom párov, oddelených hrubého čreva. V záhlaviach sa prenášajú rôzne servisné informácie: Kódovanie správy, názov a verzia prehliadača, adresa, z ktorej klient prišiel (referer) a tak ďalej.

Teleso správy je v skutočnosti prenášané údaje. V reakcii na prenášané údaje, spravidla HTML Stránka, ktorá požadovala prehliadač, a v dotaze, napríklad v telesnom tele, sa prenáša obsah súborov prevzatých na server. Ale spravidla, orgán správy v dotaze je všeobecne neprítomný.

Príklad interakcie HTTP

Príkladom.

Vyšetrovanie:
Get /index.php http / 1.1 Hostiteľ: Príklad užívateľsky agenta: Mozilla / 5,0 (X11; U; Linux I686; RU; RV: 1.9B5) Gecko / 2008050509 Firefox / 3.0B5 Prijať: Text / HTML Pripojenie: Zatvoriť
Prvým riadkom je reťazec dotazu, zvyšok sú titulky; Neexistuje žiadna správa o telo

Odpoveď:
HTTP / 1.0 200 OK Server: Nginx / 0.6.31 Jazyk obsahu: RU OBSAHOVÉHO TYPU: TEXT / HTML; CHARPET \u003d UTF-8 Dĺžka obsahu: 1234 Pripojenie: Zavrieť ... HTML Stránka ...

Zdroje a metódy

Vráťme sa na štartovaciu čiaru žiadosti a nezabudnite, že predstavuje taký parameter ako URI. To je dešifrované ako jednotný identifikátor zdrojov - jednotný identifikátor zdrojov. Zdroj je spravidla súbor na serveri (príklad URI v tomto prípade "/steles.css"), ale vôbec môže existovať akýkoľvek abstraktný objekt ("/ blogy / webdev /" - označuje Blokovať "webový vývoj", nie na konkrétnom súbore).

Typ dotazu HTTP (tiež nazývaný HTTP metóda) označuje server na skutočnosť, že chceme vyrábať so zdrojom. Spočiatku (na začiatku 90. rokov) sa predpokladalo, že klient by mohol len dostať ho zo zdroja - aby si to, ale teraz, podľa protokolu HTTP, môžete vytvoriť príspevky, upraviť profil, vymazať správy a oveľa viac. A tieto akcie je ťažké kombinovať termín "potvrdenie".

Ak chcete vymedziť akciu so zdrojmi na úrovni metódy HTTP a nasledujúce možnosti boli vynájdené:

  • Získať - Získanie zdroja
  • Post - tvorba zdrojov
  • Aktualizácia zdroja
  • Odstrániť - Odstrániť zdroj
Venujte pozornosť skutočnosti, že špecifikácia HTTP nezaväzuje, že server pochopiť všetky metódy (čo je vlastne oveľa viac ako 4) - vyžaduje sa len dostať sa, a tiež neznamená, že server, ktorý by mal robiť pri prijímaní požiadavky jednu alebo inú metódu. A to znamená, že server v odpovedi na Delete /index.php požiadavku HTTP / 1.1 nie je povinný Vymazať index.php stránky na serveri, ako aj na to, aby ste získali /index.php http / 1.1 nie je povinný Vráťte stránku Index.PhP, môže ho odstrániť napríklad :)

Zvyšok vstúpi do hry

Zvyšok (reprezentačný štátny transfer) je termín zavedený v roku 2000 spoločnosťou Roem Fooring (FIELOCKOU) - jeden z vývojárov protokolu HTTP - ako názov skupiny princípov webových aplikácií. Všeobecne platí, že ostatné pokrýva širšiu oblasť ako http - môže sa aplikovať v iných sieťach s inými protokolmi. Oddychová popisuje princípy interakcie a servera klienta na základe pojmov "zdroj" a "sloveso" (môžete ich pochopiť ako podliehať obom). V prípade HTTP je zdroj určený svojím URI a sloveso je metóda HTTP.

Zvyšok navrhuje odmietnuť používať rovnaké URI pre rôzne zdroje (to znamená, adresy dvoch rôznych článkov ako /index.php?article_id\u003d10 a /index.php?article_id\u003d20 nie je redukčným spôsobom) a používa sa inak Metódy HTTP pre rôzne akcie. To znamená, že webová aplikácia napísaná pomocou zvyšného prístupu vymaže zdroj pri prístupe k jeho metóde HTTP vymazania (samozrejme, to neznamená, že je potrebné poskytnúť príležitosť odstrániť všetko a všetko, ale akýkoľvek Žiadosť o vymazanie v žiadosti musí použiť metódu HTTP-Delete).

Zvyšok dáva programátorom schopnosť písať štandardizované a o niečo krajšie webové aplikácie ako predtým. Pomocou zvyšku, URI pridať nového používateľa nebude /user.php?action\u003dcreate (Získať / post metóda) a jednoducho /user.php (prísny post spôsob).

V dôsledku toho spolu existujúca špecifikácia http a zvyšok prístup konečne získava význam rôznych metód HTTP. Získajte - vráti zdroj, príspevok - vytvorí nový, DAP - aktualizácie existujúce, odstrániť - odstránenie.

Problémy?

Áno, je tu malý problém s použitím zvyšku v praxi. Tento problém sa nazýva HTML.

Dajte / Vymazať požiadavky možno odoslať cez XMLHTTPROEST, s odkazom na manuálny server (povedzme, cez Curl alebo dokonca cez Telnet), ale nemôžete vytvoriť formulár HTML, ktorý pošle plnohodnotnú požiadavku na vymazanie / odstránenie.

Faktom je, že ŠPECIFIKÁCIA HTML NEPOUŽÍVATEĽA NEPOUŽÍVAŤ FORMULÁRSKEJ POTREBUJÚCEHO POTREBUJÚCEHO POTREBUJÚCEHO POTREBUJÚCEHO POTREBUJÚCEHO POTREBUJÚCEHO POTREBUJÚCEHO POTREBUJÚCICH AKO POTREBUJTE. Preto, pre normálnu prevádzku s inými metódami, musia ich umelo napodobniť. Napríklad v regáli (mechanizmus na základe toho, ktorý rubín interaguje s webovým serverom; s nosičom, koľajnicami, merbom a inými rubínovými rámcami sú vyrobené) Vo formulári môžete pridať skryté pole nazývané "_method" a ako a Hodnota Uveďte názov metódy (napríklad "DAP") - V tomto prípade bude odoslaná požiadavka, ale stojan bude schopný predstierať, že som dal, a nie.

Tento príspevok je určený na vysvetlenie princípov prenosu dát na internete pomocou dvoch hlavných metód: Získať a post. Napísal som ho ako doplnok k pokynom pre generátora vymeniteľného plánu práce pre tých, ktorí sú sotva zaujímavé pre detaily ☺.

Prejdite na nasledujúcu adresu (to je pre vizuálne vysvetlenie): http://calendarin.net/calendar.php?year\u003d2016 Upozornenie na adresu prehliadača: kalendár.net/calendar.php ? Rok \u003d 2016 Hlavný súbor sa volá, po ktorom nasleduje otáznik (?) A parameter "Rok" s hodnotou "2016". Takže všetko, čo sleduje otáznik, je to žiadosť o získanie. Všetko je jednoduché. Nie je to jeden parameter, ale niekoľko, potom potrebujú rozdeliť AMPERSAnd (&). Príklad: kalendár.net/calendar.php. ? Rok \u003d 2016 & Zobraziť \u003d pracovné dni-a-dňové

Hlavný súbor je tiež nazývaný, po ktorom nasleduje otáznik (?), Potom "rok" parameter s hodnotou "2016", potom AMPERSAND (&), potom - parameter "Display" s "pracovným dňom - \u200b\u200ba -Deday "parameter -off.

GET-parametre sa môžu meniť priamo v paneli s adresou prehliadača. Napríklad zmena hodnoty "2016" na "2017" a stlačením tlačidla, pôjdete do kalendára za rok 2017.

Tento prenos dát skrytým spôsobom (adresa stránky sa nezmení); To znamená, že vidieť, čo bolo odoslané, môžete používať iba program (skript). Napríklad v nasledujúcom nástroji pre výpočet znakov v texte sa počiatočné údaje prenášajú poštou: http://usefullinetools.com/free/character-counter.php

Ak máte otázky, komentáre a môj e-mail je vo vašej službe.

Okrem získanej metódy, ktorú sme preskúmali v predchádzajúcej poznámke, existuje ďalší spôsob odoslania dotazu na protokole HTTP - post metóda. Metóda post je tiež v praxi veľmi často používaná.

Ak sa na odkazovanie na metódu Získať, stačí, aby sme zadali požiadavku na adresu URL, potom všetko funguje v post metóde iného princípu.

S cieľom vykonať tento typ požiadavky, musíme kliknúť na tlačidlo s typu \u003d "Odoslať atribút", ktorý sa nachádza na webovej stránke. Upozorňujeme, že toto tlačidlo sa nachádza v prvku. S atribútom metódy s poštou.

Zvážte tento kód HTML:

Zadajte text:


Ak používateľ vstúpi do textu na textové pole a kliknutím na tlačidlo "Odoslať", potom premenná textu bude odoslaná na server s obsahom obsahu, ktorý používateľ zadal.

Post a získajte požiadavky s jednoduchými slovami

Táto premenná bude odoslaná poštou.

Ak píšete vo formulári:

Tieto údaje budú odoslané metódou Získania.

Ak sa v prípade žiadosti o získanie, množstvo údajov, ktoré by sme mohli vysielať, je obmedzený na dĺžku dĺžky prehliadača, potom v prípade požiadavky na post neexistuje žiadne takéto obmedzenie a môžeme prenášať významné množstvo informácií.

Ďalším rozdielom post metódy od získania, post metóda skrýva všetky premenné prenášané na ne a ich hodnoty v jeho tele (subjekt-telo). V prípade spôsobu získania boli uložené v reťazci dotazu (požiadavka-URI).

Tu je príklad žiadosti o postujúcu metódu:

Príspevok / http / 1,0 r \\ n
Hostiteľ: www.site.ru \\ t
Referer: http://www.site.ru/index.html jednotky.
Cookie: príjem \u003d 1 r \\ n
Typ obsahu: Aplikácia / X-www-forma-urlencoded \\ t
Dĺžka obsahu: 35 R \\ t
r \\ n
LOGIN \u003d DIMA & HESLO \u003d 12345

Tak, ktorí prechádzajú údaje o postu, budú oveľa ťažšie zachytiť útočníka, pretože Sú skryté pred priamym prezeraním, takže spôsob prenosu dát podľa metódy post sa považuje za bezpečnejší.

Okrem toho, post Metóda môže byť prenášaná nielen textom, ale aj multimediálnymi údajmi (obrázky, zvuk, video). Existuje špeciálny parameter typu obsahu, ktorý definuje typ informácií, ktoré sa majú prenášať.

A nakoniec, aby ste získali údaje, ktoré boli prenášané touto metódou, sa používa premenná post.

Tu je príklad spracovania v PHP:

ECHO $ \u200b\u200b_POST ['TEXT'];
?>

V poslednej poznámke sme sa rozhodli, že prehliadač (klient) pošle požiadavky na HTTP server a server pošle HTTP odozvu na klienta HTTP. Tieto žiadosti a odpovede sa vydávajú podľa niektorých pravidiel. Tam je niečo ako syntax, ako by mala byť napísaná sekvencia. Musí existovať prísna definovaná štruktúra.

Dovoľte nám zvážiť túto štruktúru podrobnejšie, ktorá vybuduje požiadavky a odpovede v protokole HTTP.

Požiadavka HTTP pozostáva z troch hlavných častí, ktoré idú v ňom v poradí, ktorý je uvedený nižšie. Existuje prázdny riadok medzi hlavičkami a telom správy (ako separátor), je to reťazec prekladový symbol.

Prázdny reťazec (separátor)

Príspevok a získať požiadavky, aký je rozdiel medzi nimi a čo je lepšie a na aké účely?

teleso správ (orgán entít) - voliteľný parameter

Riadok - označuje metódu prenosu, adresa URL, na ktorú je potrebné pristupovať verzia protokolu HTTP.

Titulky - Opíšte telo správy, prenášanie rôznych parametrov a ďalších informácií a informácií.

telo - Toto sú údaje, ktoré sa prenášajú v žiadosti. Teleso správ je voliteľný parameter a nemusí chýbať.

Keď dostaneme odpoveď zo servera, telo správy je najčastejšie obsah webovej stránky. Keď však dotazy na server, môže byť tiež niekedy prítomný, napríklad, keď sprostredkúvame údaje, ktoré boli vyplnené vo formulári spätnej väzby na server.

Podrobnejšie, každý prvok dotazov, pozrieme sa na nasledujúce poznámky.

Poďme, napríklad, zvážte jednu skutočnú požiadavku na server. Zdôraznil som každú časť dotazu podľa mojej farby: dotazová linka - zelená, titulky - oranžová, správa tela je modrá.

Žiadosť z prehliadača:

Hostiteľ: webgyry.info.

COOKIE: WP-Nastavenia

Pripojenie: Keep-Alive

Nasledujúci príklad už má telo správy.

Odpoveď servera:

Typ obsahu: text / html; Charset \u003d utf-8

Transfer-kódujúce: counded

Pripojenie: Keep-Alive

Keep-Alive: Timeout \u003d 5

X-Pingback: //webgyry.info/XMLRPC.PHP

Dokument Untitled

Tu sú správy klienta a HTTP server.

Mimochodom, chcete vedieť, či dáva zmysel v niektorých položkách na vašej stránke pomocou "gólov" Yandex Metrics a Google Analytics?

Odstráňte to, čo nefunguje, pridajte to, čo funguje a zdvojnásobte svoje príjmy.

Kurz na nastavenie cieľov metrík Yandex.

Google Analytics Goals Setup kurz.

Klient HTTP odosiela požiadavku na server vo forme požiadavky na požiadanie, ktorá má nasledujúci formát:

  • Riadok dotazu (povinný prvok)
  • Názov (voliteľný prvok)
  • Prázdny reťazec (povinný prvok)
  • Teleso správ (voliteľný prvok)

Každý z týchto prvkov zvážte samostatne.

Riadok

Reťazec dotazu začína metódou token, potom, čo URI dotaz a verzia protokolu nasledujú. Prvky sú roztrúsené z každej inej medzery:

Zvážte túto položku podrobnejšie

Spôsob žiadosti

Tento prvok označuje metódu, ktorá musí byť požadovaná na strane servera na zadaný inferný URI.

V HTTP je osem metód:

  • Hlavu.
    Používa sa na získanie stavu reťazca a hlavičky zo servera URI. Nemení údaje.
  • Dostať.
    Používa na prijímanie údajov zo servera do zadaného URI. Nemení údaje.
  • Post.
    Používa sa na odosielanie údajov na server (napríklad informácie o vývojárovi atď.) Pomocou formulárov HTML.
  • Dať.
    Nahrádza všetky predchádzajúce údaje na základe nových údajov o zdroji.
  • Vymazať.
    Odstráni všetky aktuálne údaje o zdroji definovanej URI.
  • Pripojiť.
    Nastaví pripojenie tunela na server podľa zadaného URI.
  • Možnosti.
    Popisuje vlastnosti pripojenia pre zadaný zdroj.
  • Stopy.
    Poskytuje správu obsahujúcu spätnú stopu zdroja uvedeného v URI.

Požiadavka URI

URI (jednotný identifikátor zdrojov) je identifikátor zdrojov, na ktorý sa posiela dotaz. Nižšie je najbežnejší formát URI:

‘*’ Používa sa, keď požiadavka HTTP sa nevzťahuje na konkrétny zdroj, ale na server. Používa sa len v prípade, keď metóda nie je potrebná na použitie na zdroj. Napríklad,

absolútne. Používa sa pri vykonávaní požiadavky HTTP na proxy. Proxy je požiadaný, aby odovzdal dotaz z cenovo dostupnej vyrovnávacej pamäte a vráti odpoveď. Napríklad:

Asbutivated_put | Zdrojpoužíva sa najviac Chatso.

Naučiť sa pracovať s získaním a poštovými požiadavkami

Vyžaduje sa špecifický zdroj konkrétneho servera. Klient chce napríklad získať zdroj zo servera cez 80. port. Adresa zdrojov "www.proselyte.net" a odosiela nasledujúcu požiadavku:

Požadovať polia hlavičky

Polia hlavičky umožňujú klientovi preniesť ďalšie informácie o požiadavke a o sebe na samotný server. Tieto oblasti pôsobia ako modifikátory dotazov.

Nižšie je priesečník najdôležitejších polí hlavičky, ktoré možno použiť:

  • Akceptovať.
  • Kódovanie
  • Akceptovať jazyk.
  • Povolenie
  • Očakávať
  • If-zápas.
  • IF-upravené - pretože
  • Ak nie
  • If-rozsah.
  • Ak nie je nemodifikovaný - pretože
  • Rozsah.
  • Referer.
  • Užívateľský agenta

Ak sa rozhodneme implementovať svoj vlastný klient a vlastný webový server, potom môžeme vytvoriť vlastné polia hlavičky.

Príklad požiadavky HTTP

Na tomto sme dokončite vzdelávacie požiadavky HTTP.
V nasledujúcom článku sa pozrieme na odpovede HTTP.

Jeden spôsob, ako odoslať požiadavku cez http na server, je požiadať o metódu Získania. Táto metóda je najbežnejšia a požiadavky na server sa najčastejšie vyskytuje pri jeho používaní.

Najjednoduchší spôsob vytvorenia získaného dotazu možno použiť na zadanie URL v paneli adresára prehliadača.

Prehliadač pošle server približne nasledujúce informácie:

Získajte / http / 1.1
Hostiteľ: webgyry.info.
User-Agent: Mozilla / 5.0 (Windows NT 6.1; RV: 18,0) Gecko / 20100101 Firefox / 18.0
Prijať: Text / HTML, Aplikácia / XHTML + XML, Aplikácia / XML; q \u003d 0,9, * / *; q \u003d 0,8
Akceptujte jazyk: RU-EN, RU; Q \u003d 0,8, EN-US; Q \u003d 0,5, EN; Q \u003d 0,3
Prijímať kódovanie: GZIP, defláciu
COOKIE: WP-Nastavenia
Pripojenie: Keep-Alive

Žiadosť pozostáva z dvoch častí:

1. Linka žiadosti (Linka žiadosti)

2. Záhlavie (hlavičky správ)

Upozorňujeme, že získaný dopyt nemá telo správy. To však neznamená, že s ním nemôžeme preniesť žiadne informácie na server.

Rozdiel medzi get a poštovými metódami

Toto môže byť vykonané pomocou špeciálnych parametrov.

Ak chcete pridať parametre na požiadanie, musíte dať znak "?" Na konci adresy URL A po tom, čo ich začne nastaviť v nasledujúcom pravidle:

parameter_Name1 \u003d Hodnota Parametre1 a parameter Názov2 \u003d Hodnota Parametre2 & ...

Oddeľovač medzi parametrami je znak "&".

Napríklad, ak chceme prejsť dve hodnoty, užívateľské meno a jeho vek, môže sa vykonať ďalší riadok:

http://site.ru/page.php?name\u003ddima&age\u003d27

Keď sa tento dotaz vykoná, dáta spadajú do takzvanej premennej prostredia Query_string, z ktorej je možné získať na serveri pomocou webového programovacieho servera.

Tu je príklad, ako je možné vykonať na PHP.

ECHO "Tvoje meno:". $ _GET ["NAME"]. "
»;
Echo "Tvoj vek:". $ _GET ["AGE"]. "
»;
?>

Dizajn $ _GET ["Názov parametra") Umožňuje zobraziť hodnotu prenášaného parametra.

V dôsledku vykonania tohto kódu sa zobrazí v prehliadači:

Vaše meno: DIMA
Váš vek: 27

vykonávame aj požiadavku na získanie servera.

Spoločný medzi nimi, skutočnosť, že pracujú rovnako. Rozdiel medzi nimi je technicky č. Ale existujú ideologické rozdiely.

Poviem im v kontexte PHP. Upozorňujeme, že protokol HTTP na PHP má nepriamy postoj, pretože bol vytvorený na výmenu stránok HTML a PHP jednoducho rozširuje možnosti a druhé.

Získajte dotaz sa používa na získanie údajov poštou na odoslanie. (Pripomínam vám, že technicky fungujú rovnako).

Preto sa v kontexte PHP spoliehali na túto ideológiu takto: \\ t
1. Zakaždým, keď sa spustí PHP, sú štandardne vytvorené superglobálne polia ($ _GET, $ _POST).
2. Ak existuje otáznik v reťazci dotazu (?). Potom sa všetko zvažuje parametre Získajte požiadavky, ktoré sú prezentované vo formáte "Key" \u003d "Hodnota" a AMPERSAnd Sign (&) sa používa ako oddeľovač
Príklad:
Get /index.php?name\u003dandrey&surname\u003dhalkin
Toto je reťazec dotazu, tu 2 Parametre. Tieto parametre spadnú do polovice $ _GET.
3. $ _POST je naplnený iným spôsobom. Obsah tohto poľa sa vyplní z "hlavičiek požiadavky". To znamená, že z miesta skryté z očí explicitne. Celá rutina na vytvorenie takýchto titulkov prevezme prehliadač. Aj keď sa niekedy niečo upraví v titulkoch do manuálu.

Najčastejšie sa požiadavka príspevku používa vo formách (na odosielanie údajov).

Máme napríklad formulár, ktorý sa chcete prihlásiť do 2 prihlásenia a hesla.

Predstavte si, že používame metódu Get. Potom, keď posielame formulár, obrátime sa na nasledujúcu adresu /login.php?login\u003dandrey&password\u003d123 Súhlasím s tým, že to nie je bezpečné prenos takýchto informácií. Každý môže otvoriť váš prehliadač a začať zadať adresu stránok. Môže vidieť vaše heslá a prihlásenie.

Ale ak sme zadali metódu post, potom by sme dostali nasledujúcu požiadavku:
Post /Login.php (Login \u003d Andrey & Password \u003d 123) Čo je v zátvorkách skryté a nie sú uložené v prehliadači.

Všeobecne platí, že sumarizuje:
Získajte je získať určitú stránku v konkrétnej forme (triedenie, aktuálna stránka v blogu, vyhľadávací reťazec atď.).
Post - pre tŕňové údaje, ktoré neovplyvňujú zobrazenie stránky, spôsobom, ktorý tieto údaje ovplyvňujú len výsledok vykonania skriptu (prihlásenia, heslá, čísla kreditných kariet, správ atď.).

A ešte jedna dobrá správa môže byť kombinovaná
Post /index.php?page\u003dLOGIN (LOGIN \u003d ANDREY & PASSWORD \u003d 123) Myslím, že som už viac vysvetlil, že sa ukázalo, a aké parametre, ku ktorému poľa spadne.