Blog web design stúdió «hogy egy oldal»
Miután elküldi az űrlapot az adatok és a feldolgozás szerver script, akkor meg kell tennie elleni védekezés újra elküldeni az adatokat annak érdekében, hogy elkerüljék a nem kívánt ismétlődő rekordok az adatbázisban, és leveleket a postán. Nézzünk két egyszerű formák védelmet újraküldened adatokat.
Mindennek alapja az a tény, hogy a felhasználó kitölti az adott html formában az oldalon, majd amikor minden mezőt kitöltött, akkor elküldi az adatokat a szerverre, ha megnyomja a „küldés” gombot, a „Pénztár”, „Vásárlás”, és így tovább. Stb . és az űrlap elküldése adatokat a szerver lehet tenni két módon - a GET és a POST.
Természetesen, sok felhasználó nem frissíti az oldalt azonnal küldje az űrlap adatok (úgy tűnik, miért is kellene egyáltalán), de néha ugyanaz a probléma akkor fordulhat elő, ha megnyomja a „Vissza” gombot. Ha az átmenet kerül sor az oldalon, ahonnan küldeni az űrlap adatokat, akkor nem töltődik be, és helyette egy üzenetet jelenít meg, hogy az adatok elavultak, vagy valami ilyesmi.
A probléma újra küldi az adatokat a megfelelő formája, amikor azonnal, ott van a mellett egy új sort az adatbázisba, például az a sorrend, az online áruház, az új felhasználói regisztráció, és így tovább. D. Csakúgy, mint a megfelelő e-mail értesítést küldünk. Annak érdekében, hogy elkerüljék a nem kívánt ismétlődő rekordok az adatbázisban, és leveleket az e-mail, szükséges, hogy megakadályozzák az újbóli adatokat küld. És egészen pontosan -, hogy megakadályozzák vagy figyelmen kívül hagyni. Ezért úgy véljük, két alapvető módja van:
Tehát azon a ponton, a forgatókönyvet, ahol van egy rekord egy új sort az adatbázisba, vagy küldjön egy e-mail értesítés, meg kell adni a következő kódot:
Ebben a példában, köszönhetően a hatalmas lehetőségeit csodálatos programozási nyelv PHP állunk hozzá, hogy a fejléc információ, amelynek az oldal végre kell hajtania a migrációt, majd használja a exit () megszakítja az aktuális script, t. Hogy. Az oldal még mindig azonnal újraindul, és nincs értelme, hogy kínozza a szerver, futás parancsok alatt a jelenlegi kódsort.
A legfontosabb dolog az, hogy az átmenet lehet végezni ugyanazon az oldalon, ahol voltunk korábban, de az összes POST-adat törlődik nulla, ami azt jelenti, az oldal frissül történik újraküldené formájában a régi adatokat a szerverre - csak mi szükség van.
A fő hátránya ennek a módszernek, felesleges oldal frissítése. Ez persze nem kritikus, de nem feltétlenül szükséges, ezért az első módszer nem nevezhető tökéletes.
Módszer №2: «Session” - figyelmen kívül hagyva az elküldött adatokat újra
Ebben a folyamatban, akkor használja az ülésen, ezért győződjön meg arról, hogy az ülésen bejelentette elején a forgatókönyvet, és kész. Ehhez használja a munkamenet inicializáló függvény session_start ().
A módszer lényege - a cél alakját felvenni kívánt további rejtett mező egy véletlenszerű nevet és egy véletlen érték, mint ez:
Korábban, persze, akkor regisztrálnia kell a műveleti azonosító sessid és rendeljen hozzá, amennyire csak lehetséges elméleti értéket egy hash függvény. például MD5.
A duplák valószínűsége ebben az esetben szinte nulla, ha nem így gondolod, akkor szélesítik a véletlenszerűség vagy bonyolítja az algoritmus az ízlése.
Aztán, amikor az űrlap elküldése, az adatok továbbítása a szerverre, ahol ellenőrzik, hogy érvényes és helyességét speciális funkció, és ha sikeres van egy konverziós műveletet (írni az adatbázis, e-mailt küldeni, és így tovább. D.), és csak abban az esetben, ha a sikeres teszt, azonnal újra a munkamenet azonosító sessid.
Most már csak azt kell ellenőrizni a munkamenet sessid a rejtett értéke az ugyanazon a területen sessid. továbbított Önnek formában. Ha ezek megegyeznek, akkor van értelme, hogy ellenőrizze a többi adatot, és ha nem - megpróbálta elküldeni az űrlapot újra, amikor ezen az ülésen, hogy újra maga az érték sessid. amely áthatol a forma a régi maradt.
Mint látható, minden nagyon egyszerű - mi bontott két egyszerű módja, hogy újra elküldi az adatokat. Mindkettő jól működik, jól kidolgozottak, és többször is a gyakorlatban kipróbált különböző helyeken. De a mi véleményünk, előnyös még a második módszer az ülésen.