2 lehetőség CAPTCHA webhely
Ebben a leckében megtanuljuk, hogy megírják saját captcha még két változatban, ami nem lesz túl bonyolult, felhasználóbarát, és ugyanabban az időben, elég hatékony.
Lecke terv:
1. formálási problémák (08:01)
2. algoritmus captcha №1. Végrehajtásának megkezdése (14:56)
3. captcha észre a matematikai kifejezést (00:03)
4. Ismerd fel a captcha kérdés-válasz (17:49)
1. Nyilatkozat a probléma
Szóval beszéljünk egy kicsit arról, megjelenik egy CAPTCHA. Mint már említettük, ha teszünk közzé az Interneten a szokásos formáját visszajelzést, akkor hamarosan a mi mail árvíz több száz spam üzenetek mely vásárolni egy haszontalan dolog, és kap egy ajándékot még nem a helyes dolgot, vagy valami ilyesmi. Gyakran az egész folyamat automatikus spammerek, azaz Nem mennek a helyszínek és töltse ki a spam kapcsolati formákat, és számukra ez teszi különlegesen megírt szkriptek (spamkeresőktől). Ez azért van, mert a mi formában kell lennie valamiféle védelmet automatizált formában töltés, azaz Be kell, hogy ellenőrizze a töltet emberiséget.
Ha nem küld üzeneteket töltött botok kitalált több mint egy út. Valószínűleg az első és leghíresebb a CAPTCHA (rövidítés valami ilyesmit - „automatizált teszt különbségek Computers and Humans Apart”) ... de ugyanakkor - ez a legkellemetlenebb a felhasználó opciót (véleményem szerint). Azt hiszem, sokan találkoztak betöltésénél a captcha - néha meg kell szó szerint „visszafejteni” is, vajon - Mi ez a szimbólum? Mint megfejtett bevezetésével ... kapsz egy üzenetet, hogy nem érvényes ... újra kezdeni a kísérletek terén dekódolás ... néha minden véletlenszerűen kitalálni, hogy a fejlesztők ezt a különleges captcha figyelembe venni az esetben a karakterek, de ugyanakkor egy szó sem mondtak róla ... akkor jelenik meg, ez az erős vágy, a fejlesztők az úgynevezett rossz szó.
Igen, és amellett, ma CAPTCHA már nem megbízható védelmet nyújt az automatizált nyomtatványok kitöltése és az automatikus év - bot „egyre intelligensebb” és gyakran nem is ismeri fel (saját tapasztalat: a fórum a szokásos CAPTCHA, amely áll az egyik cég, a nap volt 10 automatikus regisztrációt, illetve közel azonos obszcén tény cseréje után captchas a AntiBot típus „Kérdések és válaszok” bot nem regisztrált) ... ezen kívül vannak még forrásokat, hogy a bérleti clickers azoknak dolgozó javára a spa merek - karakterek CAPTCHA beadni.
Általában a hagyományos captcha nem a legjobb megoldás. Ma van egy sokkal megbízhatóbb ellenőrzési módot az emberiség számára, ami ráadásul sokkal kényelmesebb a felhasználó számára.
Íme néhány lehetőség, amelyek véleményem, lehet sikeresen versenyezni a hagyományos captcha:
1. számítsuk ki az eredményt hozzáadás (vagy más matematikai művelet) Két véletlen számok;
2. választ adni egy egyszerű kérdésre, például „A neve a bolygó”;
3. eltávolításához / pipálja ki a négyzetet;
4. kattintva az adott képet a javaslatok száma.
Azt hiszem, ez lehet egy prológ, hogy befejezze, és lépni a létrehozását az algoritmus és annak végrehajtását.
2. algoritmus captcha №1. Kezdjük végrehajtását
A számok generálására használjuk a funkciót rand (), így egy véletlen egész szám a megadott tartományon belül. Fent kód formájában PHP nyílt tervezés és elkezd kódolni:
Így a változó $ a és $ b, most már van egy véletlen számot 1 és 10 Emellett megnyitotta az ülést session_start () függvényt. Azt hiszem, már sejtette, hogy miért van rá szükség. Mi van valahol tárolni eredményét kívül két szám után az űrlap elküldése adatokat a kezelő, és a legegyszerűbb módja, hogy ezt a session. Hozzon létre egy munkamenetben, és rendelje hozzá az eredmény egy matematikai művelet - Van ez lesz a kiegészítéssel:
Továbbra is, hogy a felhasználó által generált számokat a megfelelő helyen és a forma:
Most már tudjuk, hogy a közbenső vizsgálat már meg van írva. Ehhez a rajt után az ülés írunk be az alábbi kódot:
Mik ezek a sorokat a kód?
Először is, az első feltétel azt ellenőrzi, hogy a küldés elem létezik a globális POST tömb. Ezt annak érdekében, hogy ellenőrizze, hogy a gomb megnyomása formában - a küldés gombot van neve, mert az, hogy leellenőrizzük, hogy a jelenléte ezt az elemet a POST-adatokat. Tehát, ha a gomb megnyomása után fogja végrehajtani, hogy a kód zárójelben szereplő, vagy - a kód kimarad. De üzemeltető zárójelben megadjuk a feltételeket. Ez az állapot vagyunk, sőt, és hasonlítsa össze, hogy mit kapott a felhasználó számára, hogy az a tény, hogy már tárolt munkamenet változót $ _SESSION [ „res”]. Ha mindkét érték azonos - ellenőrizze az „OK” és átadta jelenik meg, ellenkező esetben -, hogy ellenőrizze az emberiség számára nem sikerült.
Így indul el, akkor írjuk be a kódot a blokk másképp (más), amely bekapcsol, abban az esetben, ha a vizsgálatot nem telt el. Mit kell tennünk ebben az esetben? Meg kell generálni 2 új számot, és tájékoztatja a felhasználót, hogy ő még nem vizsgálták. Mindehhez kell, hogy teljesen újra az oldalt - ez segít funkció header () -, és hozzon létre egy új session változót, amely azt fogja írni üzeneteket a felhasználót a siker vagy kudarc.
Most ez szükséges ahhoz, hogy a $ _SESSION [ „mes”] a megfelelő helyen, például az űrlapot. azt is meg kell azonnal regisztrációját a munkamenet változót, mivel annak értéke meg kell jelennie csak egy alkalommal, majd frissítse az oldalt, hogy ne legyen.
Az űrlap, írja be a kódot:
Most, amikor tesztelés van írva, ha nem teszünk a rossz válasz a vizsgált kifejezés, az „adott rossz válasz!”, Azaz Úgy működik, ahogy kellene, különben a készülék. Ha a válasz helyes - működne egység állapota, de mégis üres - semmi sem kerül megjelenítésre. Most küldött leveleket a feltételeket, a blokk.
3. Ahhoz, hogy a matematikai kifejezés captcha
A levél alkalmazásával kialakított mail () függvény, és akkor elküldi az e-mail szerver. Ennek a funkciónak három szükséges paraméterek:
2. $ tárgya - az üzenet tárgya;
3. $ test - a levél törzsében.
Emellett ott van még egy kötelező, de nagyon kívánatos érv, ahol megadhatja dopolnitelnvy szolgáltatási adatokat, például a kódolás, amelyben az e-mail programot megnyitni kívánt írni (egyébként az üzenet nyílik meg a kódolás, az alapértelmezett e-mail program).
4 változó, és hozzon létre egy e-mail () függvény képezi majd egy már kész a küldéshez:
Magyarázza egy kis kódot.
Így az első érintkezés CAPTCHA végre. Most folytassa a végrehajtását a második.
4. Ismerd fel a kérdés és a válasz captcha
Ebben mi jelenik meg a CAPTCHA adatbázis kérdések és válaszok (kérdések bármilyen szám lehet). A felhasználó fogják kérni, hogy válaszoljon egy véletlenszerűen kiválasztott kérdés. De aztán minden megy tovább ugyanazt az algoritmust, mint az előző megjelenik egy CAPTCHA. Így a mi feladatunk az, hogy hozzon létre egy adatbázist a kérdéseket és válaszokat, véletlenszerűen kiválaszt egy kérdést. Ugyanezen az ülésen változó írandó választ, majd hasonlítsuk össze a felhasználó választ.
A mi szempontunkból, akkor hozzon létre egy új fájlt (például index2.php), ami másolja ki a kódot az előző fájlra. Teszi minimális változásokat generált fájl: átirányít minden változást a jelenlegi fájlt (index2.php), és törölje a sort a generációs számok, és hozzá az eredményt rögzíti a munkamenet változót.
Most hozzunk létre egy adatbázist a kérdések és válaszok. Tartsa őket lehet, például egy adatbázisban, szöveges fájl, vagy bármilyen alkalmas adattárolásra. Kattintson a tömb ezekre a célokra. A tömb többdimenziós - minden egyes eleme a tömb jön létre, mint egy tömb, amelynek elemeit, viszont lesz egy kérdést és választ. Helyszíni generációs szám létrehozunk egy tömböt a szükséges adatokat - én lesz 3 pár kérdés-válasz (akkor nem sokkal több ilyen párban - minden korlátozás csak a képzelet). Felhívom a figyelmet arra a tényre, hogy az összes választ kell kisbetűkkel:
Most, hogy jelenjenek meg, például azt a kérdést, „állatok királya” - elég utalni a tömb $ kérdés tehát:
Azaz, mi pedig első eleme egy 1-es gomb - egy tömböt a megfelelő kérdéseket -, majd arra a kérdésre, hogy ki van a kulcs 0. Vegyük észre, hogy minden kérdést az al-tömbökben ugyanolyan kulcs - 0, és az összes válasz - 1. Tehát módja annak, hogy véletlenszerűen választja ki a kérdést elegendő ahhoz, hogy egy első kulcs (ebben az esetben ez lesz a szám 0-2). Ehhez létrehozunk egy változót $ kulcs és tedd generált szám egy adott tartományban - ez lesz az első nyom:
Itt van feltüntetve, mint az várható volt, két lehetőség nyílik a rand () függvény. A minimális világos - ez nulla (alapértelmezett számozás tömb elemei indul nulla). A második paraméter megadható explicit módon - 2. De akkor a script lenne egy kicsit elvesztette az egyetemes - mert ha megváltoztatja a kérdések száma, amelyeket meg kell változtatni, és legfeljebb funkciókat. Ahhoz, hogy a kérdések száma ítélték automatikusan használja a függvény a count () - ez számít az elemek száma a tömbben. A mi esetünkben, a függvény visszatérési a három (3 elem a tömbben). De az utolsó kérdésre a 2 kulcs, és így a kivonást eredményez, amely visszatér a count () függvény egységet, és a kívánt eredmény eléréséhez.
Továbbra is emlékezni megfelel a kiválasztott kérdésre válaszolni. Az első nyom van, és a második mindig 1 választ:
Most ebből a kiválasztott kérdésre a megfelelő helyen formában:
Tulajdonképpen a második CAPTCHA majdnem kész, és akkor már kipróbálni. Továbbra is adjunk hozzá egy pár apró részletek. Emlékszünk, hogy fontos volt, hogy írjon a választ minden kisbetűs. Ez történt a hátsó szándék - nem tudjuk, milyen formában megkaptuk a felhasználó választ, mondjuk a kérdést: „A név bolygónk” ... ez lehet a válasz - „Föld”, és talán ez - „Föld”. Ezek a válaszok nem azonosak. Ennek megfelelően, meg kell, hogy azok azonosak a forgatókönyvet. És, hogy ez egy pillanat alatt. Ez elég ok a felhasználó választ a kisbetűs, mi fog segíteni funkció strtolower (). Továbbá, csak abban az esetben, akkor lehet vágni a különbség mindkét végén a húr kapott a felhasználótól (ez történik, ha a felhasználó által bevitt, valamint a válasz térben). Edzett terek elején és végén a sor fog működni trim (). Módosítsa a sor kódot, ahol a mérkőzés ellenőrzik a felhasználó számára, hogy az a tény, hogy van:
következtetés
Ez minden. Mind a CAPTCHA végre, és készen áll a használatra a helyszínen, és mint már említettük, véleményem szerint, a CAPTCHA sokkal hatékonyabb, mint a hagyományos captcha. Ezt a következtetést vonja le a tanulságot befejeződött. Sok szerencsét a projektek és hamarosan találkozunk!
A legtöbb IT hírek és webfejlesztés A csatorna-távirat
Annak érdekében, hogy ez minden, és azt jelenti, hogy az ügyfél nem célja olyan dolgok, mint CAPTCHA
Jelentés a kliens oldalon, hogy javítsa a használhatóságát, és ellenőrzés / védelem kell kiszabni csak a szerver része. Bot, és nem kell semmit a kliens részét, egyszerűen eltávolítja a forráskódot. Például, hogy adatokat küldjön a szerver megköveteli, hogy minden mező ki van töltve. Bár nem töltött JS blokkolja az elküld gombra. Kiváló! Vesszük a forráskód formájában, távolítsa el az összes JS belőle, és szabadon adatokat küldeni a szerverre.
Tehát: „Ha a webhelyen egy” egyedi „captcha, azaz ami nem éri a népszerű motorok, stb nincs értelme, hogy dolgozzon ki egy spammer bot alatt, mert körül tele más oldalakon is tudja átadni:”... ez a lényeg. Ez az, amit mondtak viszonyított aránya target / ügynök. Írj egy külön bot alatt egy egyedi CAPTCHA (ami természetesen nem egy vonal zaj a képen) túl drága megoldás, csak akkor indokolt a megfelelő célra.
És így, tényleg tele van weboldalak, blogok, fórumok, ahol a hétköznapi CAPTCHA áll annak végrehajtása az eredeti ...
miért fizetne többet?
Mintegy JS, de ha ezt mondják, ha rákattint egy adott gombra, mint a „nem vagyok bot”, hogy tegyen lépéseket, és építsenek formájában egy opcionális paraméter vagy egy rejtett mező egy bizonyos értéket. Aztán, mivel a hajó nem lesz képes, hogy kattintson a gombra, és az adatok nem kerülnek át. És mivel akkor küldje el az űrlapot keresztül AJAX, és nem másként. Bot, mert ez lesz időigényes feladat?
ha egy hatékony megoldás ebben az esetben, az anti-spam?
Kedves kezdő, ha nem ismeri a PHP, akkor jobb, hogy a captcha könnyebb - egy matematikai kifejezés.
Csak, hogy töltse le a vendégek, annak érdekében, hogy elmondja az algoritmus megoldásokat. Tehát addrec.php fájl kezdetben null változó $ hiba. Ez a változó az eredeti zászló: Ha az összes ellenőrzés után az üres lesz - hozzátéve egy rekord egy fájlt, különben - valami nem illik hozzánk.
Ennek megfelelően, a forma szükséges hozzá egy mező adja meg az eredmény a matematikai kifejezés, majd kívánt eredmény a területen a formából, míg az egy tárolt ülés (nem szabad elfelejteni, hogy nyissa meg a munkamenet). Ha az eredmények nem felelnek meg - meg tudjuk írni egy üzenetet a változó $ error, így blokkolva kívül az üzenetet. Ez minden
Köszönöm, de nem valószínű, hogy segíteni fog nekem. Előző CAPTCHA nem tart egy hónap, úgy, hogy az egyszerű matematikai valakinek és nem lehet lusta megnyitni, majd meg kell tölteni egy csomó időt keresni egy másik lehetőséget. Kérdések és válaszok legalább felveheti és a változás, a spammerek zavarja, hogy menjen minden alkalommal a helyszínen, és van egy kérdésem. Úgy gondolom, hogy az én esetemben a megoldás az, hogy fedezze a vendégkönyvet, amíg jobb idők.