Mi az a fogadási és postázási kérés? POST és GET kérések létrehozása. 2. szabály: Használjon POST-t az érzékeny információkat tartalmazó tranzakciókhoz

Azt hiszem, ez a cikk nem nyitja meg sokak számára Amerikát, és nekem kissé kaotikusnak tűnt, ezért helyenként ki kellett simítanom, de amolyan bevezetőként a GET vagy POST kérés közötti választáshoz, azt hiszem, ez csak jobbra.

Sajnos a gyakorlatban sok inkonzisztencia van a GET használatában a POST helyett, és fordítva. Mindkét HTTP-módszer ugyanazt az eredményt hozhatja, de helytelen használatuk váratlan és potenciálisan veszélyes következményekkel járhat.

A Hypertext Transfer Protocol célja, hogy lehetővé tegye a kommunikációt az ügyfelek és a szerverek között. A webböngésző lehet a kliens, a webhelyet tároló számítógépen lévő alkalmazás pedig a szerver. A válasz információkat tartalmaz a kérés állapotáról, és tartalmazhatja a kért tartalmat is.

Minden paramétert „és” jel választ el. A Műveletek részben. Az identitástudatos módszereket biztonságos módszereknek is nevezik, és nem törődünk azzal, hogy a klienstől ismét biztonságos módszereket kérjünk. Egy űrlapot használnak az információk átvitelére a webböngészőből a webszerverre.

Tehát, hogy megbizonyosodjunk arról, hogy jól csináljuk, bemutatok egy útmutatót a GET és a POST közötti választáshoz.

Ne felejtsük el, hogy a lekérdezési karakterláncokban egy változó/érték pár kerül átadásra a GET-nek egy ilyen URL-kérésen keresztül:

Szerezze be a /blog/?name1=value1&name2=value2 HTTP/1.1-et
Házigazda: carsonified.com

POST kérésben pedig a fejléc törzsében kerül továbbításra:

POST /blog/ HTTP/1.1
Házigazda: carsonified.com
név1=érték1&név2=érték2

Kettő van különböző módokonŰrlap beküldése a böngészőből a webszerverre. Az űrlapparaméterek bármiek lehetnek, és a fenti példában ezek a szolgáltató felhasználóneve és jelszava email. Ha össze van zavarodva, gondoljon erre a példára: ha van egy egyszerű űrlapja, amely megadja bármely személy életkorát, miután beírta a nevet, és rákattint a küldés gombra, akkor ennek az egyszerű lekérdezésnek nincs hatása. mellékhatások mert az adatokat egyszerűen visszaadja az űrlap.

Ez azt jelenti, hogy ezeket nem lehet gyorsítótárba helyezni, és a kiszolgálót minden alkalommal újra kell rendelni, amikor az oldalt rendereli. Mindezek ellenére az idempotenciát a való világban nagyrészt figyelmen kívül hagyják. Ne feledje, hogy senki sem kényszeríti ki az idempotenciát – ez inkább a legjobb gyakorlat útmutatója.

Alapok: GET vs POST

Vezessünk be egy új szót szójegyzék, a kifejezés idempotens ( hb: Ne keresd fel a Wikipédiát az értelmezéséért, az idempotencia egy objektum olyan tulajdonsága, amely abban nyilvánul meg, hogy az objektumon végzett ismételt műveletek nem változtatják meg), és az RFC 2616 9.1, 9.3 és 9.5 szakaszai segítenek nekünk az első GET szabály vs POST...

Kérelem-válasz protokollként működik a kliens és a szerver között. Tehát a szervertől való válasz kéréséhez alapvetően két módszer létezik. A felsorolt ​​könyvtárak közül a legelegánsabb és legegyszerűbb a lekérdezések. Ebben a cikkben a kérések könyvtárat fogjuk használni. A lekérdezési könyvtár letöltéséhez és telepítéséhez használja a következő parancsot.

1. szabály: A biztonságos műveletekhez használja a GET-et, a nem biztonságos műveletekhez pedig a POST-ot

A kód fontos jellemzői. Ezt a blogot Nikhil Kumar készítette. Ezeknek a metódusoknak az alapvető szintaxisa a segítségével adható meg. A fenti szintaxis paramétereinek jelentése a következő. Általában a visszaküldött adatok lekérésére szolgál. . A fő különbség e módszerek között az adatok kiszolgálóra való átvitelének módja.

1. szabály: A biztonságos műveletekhez használja a GET-et, a nem biztonságos műveletekhez pedig a POST-ot

Az RFC arra utasítja az internetes böngészőket, hogy figyelmeztessék a felhasználókat megismételt POST-kérés használata, mert ez a művelet potenciálisan nem biztonságos (például online fizetés).

Mindaddig azonban, amíg a böngésző megfelel ennek az RFC-követelménynek, meg tudjuk magyarázni, hogy miért kell a POST-ot nem biztonságos tevékenységekhez használni, és miért nem használjuk a POST-ot biztonságos tevékenységekhez?

Egyszerűen lekéri a szerverről visszaküldött dátumot és időt, és az oldal frissítése nélkül megjeleníti a böngészőben. Néhány adatot kéréssel is küldhet a szervernek. A böngészője elég okos ahhoz, hogy feldolgozza a visszaküldött választ, és megjelenítse a képernyőképen látható webhelyet annak minden színével, képével, szövegével és megjelenítésével együtt. Mivel a böngészők a válasz elemzett verzióját jelenítik meg, nem kapjuk vissza a nyers választ a szervertől.

Milyen hatalmas különbséget tesz ez a nyers válasz a böngészőben megjelenő megjelenítéshez képest! Amit itt lát, azt a böngészője is megkapja, kivéve, hogy felhasználóbarát formátumban elemzi és feldolgozza ezt a hatalmas mennyiségű adatot.

Csak vegye figyelembe, hogy a GET kéréseket gyakrabban használják:
1. A GET kérések gyorsítótárazhatók
2. A GET kérések a böngészési előzményekben maradhatnak
3. A GET kérések elmenthetők a könyvjelzőkbe
4. A GET kérések továbbíthatók, szétoszthatók stb.
5. A GET kérések könnyen módosíthatók

Megjegyzés: Ha mindkét világból a legjobbat szeretné megszerezni, egy nem biztonságos művelet biztonságossá tehető, ha idempotenssé teszi, és így biztonságban van lehetséges probléma kérések többszöri megismétlése. Minden kérelemhez hozzá kell rendelni a saját egyedi azonosítót, és ellenőrizni kell a kiszolgálón, hogy lássa, feldolgozták-e korábban az adott azonosítóval rendelkező kérést. Valójában mindent nem biztonságos műveletek Idempotensnek kell lennie, mivel a felhasználót semmilyen figyelmeztetés nem állítja meg.

Természetesen a fejedben nem tudod nagy felbontású képpé alakítani, de általános elképzelésed kell arról, hogy mi a válasz. Kellő tapasztalattal elmélyülhet a nyers adatokban, és elvégezhet némi hibakeresést, és pontosan láthatja, mi a válasz.




A Fejlécek lapon alapértelmezés szerint a kiszolgálónak küldött kérésfejlécek, valamint a szervertől kapott válaszfejlécek láthatók. Egy másik dolog, amit figyelembe kell venni a Hálózatfelügyelő lap használatakor, az első kérés mellett rengeteg más kérés is visszaküldésre kerül.

GET vs POST: Ásni mélyebbre

2. szabály: Használjon POST-t az érzékeny információkat tartalmazó tranzakciókhoz

Mivel a GET-kéréseknél a lekérdezési karakterlánc tiszta szövegben szerepel, aggódnunk kell a biztonságunk miatt, és hogy a felhasználók érzékeny adatokat fognak kezelni, például jelszavakat vagy hitelkártyaszámokat:
1. Előfordulhat, hogy felhasználóink ​​nem tudnak erről, amikor érzékeny adatokat osztanak meg másokkal URL-címeken keresztül, vagy ha böngészőjük böngészési előzményeit az adott számítógép más felhasználói is megtekinthetik (bár ez nem biztos, hogy AJAX-alapú szolgáltatásokkal működik).
2. Mi magunk sértjük meg a személyes adatokra vonatkozó törvényt azáltal, hogy szerverünk naplóiban tároljuk például a felhasználók hitelkártyájáról származó CV2-számokat.

Miért küldik vissza ezeket a további válaszokat annak, aki kezdeményezte a kérelmeket? Intelligens és segítőkész böngészője megérti, hogy egy tetszetős prezentáció létrehozásához ki kell mennie, és meg kell ragadnia az összes referenciaforrást. Következésképpen a böngésző külön kéréseket küld az eredeti válaszban hivatkozott minden egyes erőforráshoz. Amikor végiggörget a Hálózat lapon, láthatja az összes kapcsolódó erőforrást. Ezek az egyéb kérések többek között annak biztosítására szolgálnak, hogy az oldal megfelelően jelenjen meg a képernyőn.

3. szabály: Használjon POST-t a Big Data műveletekhez

Bár az RFC nem határozza meg az URL hosszát, az Internet Explorer ragaszkodik ahhoz, hogy az URL maximális hossza nem haladhatja meg a 2048 karaktert, ami bizonyos korlátozásokat támaszt a GET használatában.

4. szabály: Használja a GET-et az AJAX alkalmazásokban

Az XMLHttpRequest használatakor a böngészők kétmenetes folyamatként valósítják meg a POST-t (először a fejlécet, majd az adatokat küldik el). Ez azt jelenti, hogy a GET kérések jobban reagálnak, ami elengedhetetlen a jó AJAX környezethez.

2. szabály: Használjon POST-t az érzékeny információkat tartalmazó tranzakciókhoz

Összességében látható, hogy a Browser Inspector jó érzést ad ezekhez a referenciaforrásokhoz. Ezt egy curl-kérés demonstrálja. Ellenkező esetben elutasítja a kérésünket, feltételezve, hogy a kérés egy bottól származik. Térjünk vissza a fenti 3. lépés diagramjához, amikor megnézzük a Hálózat lapon található válaszokat. Lehet, hogy észrevett két Method és State nevű oszlopot. Ha nem látja a Módszer oszlopot, akkor lehet, hogy alapértelmezés szerint el van rejtve. A Method oszlopnak most így kell lennie a közelben látható az Állapot oszloppal.

Eredmények

Bár a szabályok általában nyomós okokból léteznek, jó tudni, mi van mögöttük. Én magam utálom a magyarázat nélküli szabályokat, és remélem, hogy a fentiek segítenek megérteni a GET és a POST közötti különbség szabályait.

Tehát ismét folytatjuk a PHP alapjainak tanulmányozását, és ebben a cikkben megismerkedünk a változók PHP-ben való átadásának módjaival, nevezetesen GET és POST metódusok. Mindegyiknek megvannak a maga előnyei és hátrányai, és megfelelő helyzetekben használják, amelyeket ebben a cikkben tárgyalunk. Megnézünk olyan kódpéldákat is, amelyek bemutatják a POST és GET metódusok működését.

Megnézzük ezt a részt, hogy megtudjuk, mit jelentenek az ezekben az oszlopokban található információk. Felfoghatja úgy, mint egy igét, amely megmondja a kiszolgálónak, hogy milyen műveletet kell végrehajtania egy erőforráson. Az Állapot oszlop az egyes kérések válaszállapotát jeleníti meg. A válaszokról a könyv későbbi részében részletesen szólunk. Fontos megérteni, hogy minden kérés választ kap, még ha a válasz hibás is, akkor is válasz.

Ugyanez vonatkozik a webalkalmazások hivatkozásaival való interakcióra is. Tegyük fel például, hogy el kell küldenünk felhasználónevünket és jelszavunkat a szervernek hitelesítés céljából. Mintaűrlapunk így néz ki a böngészőben. Az űrlap kitöltése után átirányítunk egy ilyen oldalra.

Változók átadása a GET módszerrel

Ezt a változóátadási módszert a PHP-ben használják változók átadására egy fájlnak a címsor segítségével. Vagyis a változók azonnal átadásra kerülnek címsor böngésző. Példa lehet például egy hivatkozás egy cikkre a WordPressben CNC (SEF) használata nélkül, és így néz ki:

A tartalmat az ellenőr segítségével tudjuk ellenőrizni. A testre úgy gondolhat, mint egy borítékba zárt levélre, amelyet közzé kell tenni. Ne aggódjon túl sokat emiatt, mivel a fejlécekről a következő részben fogunk beszélni. Az „Ajánlattétel” űrlap a második kérés válasza.

Változók átadása PHP-nek a POST módszerrel

Ha nem egyértelmű az előző bekezdésben, olvassa el újra. A fejléceket kettősponttal választja el név-érték párban, amelyek egyszerű szövegként kerülnek elküldésre. Az Inspector segítségével láthatjuk ezeket a fejléceket. Alább láthatja a kérés és a válasz fejléceit is.

http://site/?p=315

Vagyis ebben az esetben a 315 értékű $p változót adjuk át. Most nézzük meg részletesebben a GET metódust egy példa segítségével. Tegyük fel, hogy három $a, $b és $c változót kell átadnunk a fájlnak GET módszer és megjeleníti az összegüket a képernyőn. Ehhez a következő kódot használhatja.

$a = $_GET["a"]; $b = $_GET["b"]; $c = $_GET["c"]; $summa = $a + $b + $c; echo "Sum $a + $b + $c = $summa";

Ezenkívül azt látjuk, hogy a kérés és a válasz eltérő fejléckészletet tartalmaz a kérés fejlécében. A kérésfejlécek további információkat nyújtanak az ügyfélről és a lekérendő erőforrásról. Néhány hasznos kérésfejléc. Ügyeljen arra, hogy emlékezzen a kérés fejlécére, de csak azt tudja, hogy ez a kiszolgálónak küldött kérés része. A válaszfejlécekről a következő fejezetben fogunk beszélni.

Miután befejezte ezt a részt, kényelmesnek kell lennie. Ez ugyanaz a két paraméter, mint amikor letöltési kéréseket küld a szervernek új oldal, de két különbséggel. Először is csak egy kis információt kér, nem a teljes weboldalt.

Mivel minden változó bekerül globális tömb GET(), akkor először hozzárendeljük a változóinkhoz a GET tömb megfelelő elemeinek értékeit. Ezt már az elején megtesszük, hogy elkerüljük a különféle hibákat a változók átadásakor. Ezután a munka bemutatásához tetszőleges képletet írunk, és az eredményt megjelenítjük a képernyőn.

Tehát hogyan válasszuk ki, hogy e két alternatíva közül melyiket használjuk? A két módszert valójában nagyon különböző célokra hozták létre, és a működésük közötti különbségek részben abból adódnak, hogy eltérőek a rendeltetésük.

Például, ha egy adott webhelyről szeretne letölteni egy képet, a böngészője kérést küld a webszervernek a következő paranccsal. A két módszer néha összekeveredik azzal kapcsolatban, hogy mikor kell mindegyiket használni. Más szóval, ha új fórumszál jön létre, és a szál elérési útja nincs megadva, akkor ezek közül néhányat használhat.

A GET módszer teszteléséhez egyszerűen adjon hozzá egy „?” kérdőjelet a fájl hivatkozásához. és az „&” jellel listázza ki a változókat az értékükkel együtt. Adjunk egy aktát get.php, amely a webhely gyökerében fekszik. A változók fájlba átviteléhez írja be a következőt a címsorba.

http://site/get.php?a=1&b=2&c=3

Egyszerű választás a GET és a POST között

Ennek a szakasznak a célja azonban annak pontosítása, hogy mikor kell használni az egyes módszereket. Az idempotencia bizonyos matematikai és számítástechnikai műveletek olyan tulajdonsága, amely ismételten alkalmazható anélkül, hogy a kezdeti alkalmazás keretein túlmenően megváltozna az eredmény.

Ellenkező esetben az egyes módszerek helytelen használata váratlan hibákhoz vezethet. Ezek a paraméterek lehetnek beviteli űrlapok, keresési lekérdezés a keresés lapról stb. de felmerülhet benned, hogy miért van szükségünk két különböző módszerre a bemenet elküldéséhez? A kérdés megválaszolásához nagyon fontos megérteni ezeknek a módszereknek a működését, hogy jobban megértse a valódi különbséget.

Amint a példából is látható, először közvetlenül a fájlnév mögé teszünk egy kérdőjelet. Ezt követően regisztráljuk a változót, és az egyenlő értékekkel adjuk meg az értékét. Ezt követően a többi változót ugyanúgy listázzuk ki az és jelen keresztül. Most, amikor erre a hivatkozásra kattintunk, a $a, $b és $c változók összegét fogjuk látni.

Ez a módszer nagyon egyszerű, és nem igényel további fájlok létrehozását. Minden szükséges adat közvetlenül a böngésző címsorán keresztül érkezik.

Hogyan kerülnek a bemenetek a szerverre? Ellenkező esetben használja az üzenetet adatainak elrejtésére mások elől. Mostanra már megértheti, hogyan működik mindkét módszer a bemenetek kiszolgálókra való küldésére. Így mindenki láthatta, mit küldtünk a szervereknek a böngészési előzmények vizsgálatával.

Nézzük meg a különböző biztonsági tényezőket az azonosításukhoz. A könyvjelzővel ellátott adatokat később bárki láthatja, és abszolút biztonsági kockázatot jelent! A gyorsítótár információkat tárol a jövőbeni keresésekhez, és ezzel lényegében időt takarítunk meg. Bár ez hasznosnak tűnik, előfordulhat adatszivárgás, ha a gyorsítótárazott információk rossz kezekbe kerülnek. Ez az újravégrehajtás azonban nem történik meg, ha régebbi adatok vannak tárolva a rendszer gyorsítótárában. Gyorsítótárazás. . Nézzük a különbségeket érthetőbb táblázatos formában.

Nos, most térjünk át a PHP változók átadásának második módszerére - a POST módszerre.

Változók átadása PHP-nek a POST módszerrel

Ez a módszer lehetővé teszi a változók titkos átvitelét egyik fájlból a másikba. Mint már megértette, általában két fájlt használnak erre a célra. Az első egy űrlapot tartalmaz a kezdeti adatok beviteléhez, a második pedig egy végrehajtó fájlt, amely változókat fogad el. A bemutató kedvéért nézzük meg a következő kódot.

Kezdje azzal, hogy mindkét nézethez adjon hozzá egy formátumú kulcsszó argumentumot, pl. Minden hasonlóan működik, bár jobb hibakezelést kaptunk, ha érvénytelen kéréseket küldünk. Az összes töredékről listát kaphatunk, mint korábban.

Vagy formátum utótag hozzáadásával. Az oktatóanyag 3. részében elkezdjük használni az osztályalapú nézeteket, és megnézzük, hogyan csökkentik a gyakori nézetek a megírandó kód mennyiségét. Mivel sajnos nincs megfelelő válasz a blogon, most simán kell mennie. Látogatás – egy ügyfél felkeresése egy webhelyen. Eltelt egy kis idő az utolsó látogatás óta, mióta ebből az új látogatásból új látogatás lett. Ennek a kifejezésnek technikai formája is van, mivel a szerver belső struktúrákkal rendelkezik, amelyek egy bizonyos ideig tárolják a látogatás részleteit.

Az első fájl kódja az adatbenyújtáshoz szükséges űrlappal. Adjuk a post-1.php nevet

  • művelet – adja meg a fájlt, amelybe a változók átvitelre kerülnek.
  • method – változók átadásának módja. Esetünkben ez a POST módszer.
  • név – az űrlap neve. Ezzel egyidejűleg egy azonos nevű változó is átkerül a fájlba.

Szöveges mezők:

  • név – változónevek. Esetünkben ez a kereszt- és vezetéknév (név- és vezetéknévváltozók).
  • típus – mező típusa. Esetünkben ez egy szövegmező.
  • name – a gomb és a változó neve, amelyet más változókkal együtt továbbítunk.
  • típus – gombtípus. Esetünkben ez egy adatküldő gomb.
  • érték – szöveg a gombon.

A második fájl kódja, amely változó vevőként fog szolgálni. Nevezzük post-2.php-nek

$név = $_POST; $vezetéknév = $_POST; echo "A POST metódus által átadott változók értéke $name és $lastname";

A GET módszerhez hasonlóan először a megfelelő elemek értékeit rendeljük hozzá a változókhoz globális tömbPOST. Ezután az áttekinthetőség kedvéért megjelenítjük ezeket a változókat a képernyőn a segítségével.

Most, amikor betöltjük az első fájlt, az űrlap betöltődik. Az adatok megadása után kattintson a „Küldés” gombra, melynek eredményeként új fülön megnyílik egy oldal egy második fájllal, amely az előző oldalon lévő űrlapba írt értékeket jeleníti meg. Vagyis az első fájl változóinak értékei átkerülnek a második fájlba.

Ezzel a PHP-ben a változók átadásáról szóló cikket zárjuk. Ha nem szeretnél lemaradni a blog további cikkeinek megjelenéséről, javaslom, hogy iratkozz fel a hírlevélre bármilyen kényelmes módon az „Feliratkozás” részben vagy az alábbi űrlap segítségével.

Ez minden. Sok sikert és sikert a PHP alapjainak elsajátításához.