![reklama](http://www.programosy.pl/images/reklama_forum1.png)
Wstęp
Podczas nasilających się ataków na formularze internetowe ze strony botów, spamerów czy jak inaczej je nazwiemy - musimy zabezpieczyć nasz formularz chociażby najprostszym sposobem jakim jest prosty TOKEN - który eliminuje większość ataków.
Co nam będzie potrzebne - wymagania
Dużo nam nie trzeba, aby wykonać prosty token. Nie będę wspominał o banałach, którymi jest serwer z obsługa php. Przede wszystkim musisz przygotować 10 obrazków, na których umieścisz liczby od 0..9 i zapiszesz je w folderze token (najlepiej gif - mało ważą).
Skrypt
Nasz kod najlepiej umieścić na początku pliku w którym chcemy go wykorzystać.
Jak już wspomniałem posłużymy się sesją, więc musimy ją rozpocząć poleceniem session_start, następnie wyczyścić sesję:
Należy pamiętać, że polecenie session_start musi być wywołane bezpośrednio po rozpoczęciu skryptu (<?php) !!!
- Kod: Zaznacz wszystko
$_SESSION['nazwanaszejsesji'] = '';
Teraz zajmiemy się losowaniem liczb i utworzenia ciągu obrazków. Zastosujemy tu pętlę for oraz funkcję rand.
- Kod: Zaznacz wszystko
for($indx=0;$indx<6;$indx++) { //powtarza losowanie do wylosowania (domyślnie) 6 liczb
$wylosowana= rand(0,9); //losuje liczbę
$_SESSION['nazwanaszejsesji'] .= $liczba; //dopisujemy do ciągu
$token.= '<img src="/token/'.$liczba.'.gif" />'; //dopisujemy do wyświetlenia
}
Mamy już wylosowane liczby, zapisany ciąg w sesji oraz zapis HTML do wyświetlenia.
Wyświetlenie obrazka jest proste. Wystarczy wpisać:
- Kod: Zaznacz wszystko
echo $token;
ALE nie możemy zapomnieć o weryfikacji kodu. W tym celu należy dodać do formularza pole tekstowe!
Sprawdzanie poprawności kodu
W tym celu do skryptu wykonywanego po wysłaniu formularza należy dopisać:
- Kod: Zaznacz wszystko
session_start();
(pamiętając, że musi znajdować się na początku skryptu) oraz instrukcję warunkową:
- Kod: Zaznacz wszystko
if ($_SESSION['nazwanaszejsesji'] == $_POST['nazwa_pola_tekstowego']) {
//i tu dalsze polecenia
} else {
//a tu komunikat o błędnie przepisanym kodzie
}
Dodatkowe porady
Jeżeli będzie występował błąd dot. sesji trzeba spróbować umieścić przed każdym session_start funkcję ob_start
I w ten sposób nasz formularz - czy to rejestracji czy kontaktowy - został częściowo zabezpieczony.
Poradnik napisany przez dj_disc vel espey dla programosy.pl
Pochwały przyznane za posta: 6