Pokazywałem zabezpieczenie oparte na działaniu matematycznym a teraz zaprezentuje zabezpieczenie oparte na wpisaniu określonego znaku. Na początek kod funkcji który umieszczamy przed naszym formularzem. function zabezpieczenie() {
$znak = array(′A′,′B′,′C′,′D′,′E′,′F′,′G′,′H′,′I′,′J′,′K′,′L′,′M′, ′N′,′O′,′P′,′Q′,′R′,′S′,′T′,′U′,′V′,′W′,′X′,′Y′,′Z′);
$ktory_znak = array(′pierwszy′, ′drugi′, ′trzeci′, ′czwarty′, ′piąty′, ′szósty′, ′siódmy′, ′ósmy′, ′dziewiąty′, ′dziesiąty′);
$liczby = array(′0′, ′1′, ′2′, ′3′, ′4′, ′5′, ′6′, ′7′, ′8′, ′9′);
$los = array_rand($znak, 10);
$string_znaki = $znak[$los[0]].$znak[$los[1]].$znak[$los[2]].$znak[$los[3]].$znak[$los[4]].$znak[$los[5]].$znak[$los[6]].$znak[$los[7]].$znak[$los[8]].$znak[$los[9]];
$znak_los = array_rand($liczby, 2);
$a = ′<input type=″hidden″ name=″zabez-1″ value=″′.$string_znaki[$znak_los[0]].′″ />
<p>Znaki: <b>′.$string_znaki.′</b></p><p>Wpisz odpowiedni znak aby wysłać. Znak to: <b>′.$ktory_znak[$znak_los[0]].′</b>.</p>
<p><input type=″text″ name=″zabez-2″ value=″″ /></p>′;
return $a; } Potem w ramach formularza umieszczamy wywołanie funkcji zabezpieczającej zabezpieczenie() Przykładowy formularz może wyglądać tak: echo ′<form action=″″ method=″post″>
<fieldset><legend>Zabezpieczenie</legend>
′.zabezpieczenie().′
<input type=″submit″ value=″Wyślij″ name=″wyslij″ />
</fieldset>
</form>′; Na koniec umieszczamy sprawdzanie wpisania poprawnego znaku w pole formularza. if(isset($_POST[″wyslij″])) {
if($_POST[″zabez-1″]==$_POST[″zabez-2″]) { echo ′<p>Dobrze</p>′; } else { echo ′<p>Źle</p>′; } } Siła zaprezentowanego zabezpieczania polega na tym że wskazane jest znać język Polski lub przynajmniej kilka słów. Wpisanie określonego znaku z ciągu jest napisane słownie (liczone od lewej strony). Boty z reguły są obcojęzyczne co powoduje że bot nie jest w stanie odczytać jaki znak ma wpisać z podanego ciągu... jest naturalnie ryzyko że bot będzie miał szczęście i akurat trafi na odpowiedni znak. Moim zdanie jest to zabezpieczenie które w minimalnym stopniu jest utrudnieniem dla człowieka a z kolei dla bota jest prawie nie do przejścia, takie zabezpieczenie użyłem na tym blogu i jeszcze mi się nie zdarzyło aby bot to przeszedł.