Formularz kontaktowy jest częstym celem botów internetowych, które próbują wykorzystać go na przykład do rozsyłania spamu. W tym artykule przedstawię prosty sposób na zabezpieczenie formularza przed znaczną większością botów.
Dlaczego "większością"? Przedstawiony sposób zakłada, że bot nie jest dobrze napisany i można go oszukać kilkoma sztuczkami. "Mądrzejsze", lepiej napisane boty będą w stanie obejść zabezpieczenie.
Sposób polega na dodaniu do formularza pola, które jest niewidoczne, gdy stronę odwiedza użytkownik poprzez przeglądarkę internetową. Większość botów internetowych czyta tylko kod HTML, nie zwracając uwagi na CSS, JavaScript. A to dzięki tym językom ukryjemy pole przed okiem użytkownika.
A zatem przejdźmy do opisu kroków, które należy wykonać.
- Do kodu HTML formularza dodajemy (słowo website, możemy zastąpić innym, które będzie logiczne dla danego kontekstu, np. email, name, surname,…)
<input type="text" id="website" name="website" autocomplete="off"/>
- Do pliku CSS dodajemy kod ukrywający powyższe pole
form #website{ display:none; }
- Do pliku PHP, który obsługuje nasz formularz dodajemy na górze
if(!empty($_POST['website'])) die();
Gdy bot wypełni pole website
skrypt PHP nie wykona się.