Volite web dizajn?

Zašto ne podijelite svoje znanje s cijelim svijetom? Svatko može pisati za Kroativ i na taj način se promovirati.

Pomoć potrebitima

http://www.hck.hr

Hrvatski Crveni križ

u službi humanosti od 1878.

Kako napraviti user-friendly spam-free formu

Autor/ica itzvonko

Iskusni web developer s višegodišnjim iskustvom u back-end i front-end kodiranju. Odnedavno voditelj projekata tvrtke IT Sense.
Najponosniji na projekt SliceMachine koji vam pomaže u rezanju dizajna i pretvaranju u web stranicu.

Oglas

Najveći problem današnjice je spam. No, da bi se borili protiv istog, programeri često koriste metode koje, blago rečeno, živciraju korisnike i tjeraju ih sa vaših web stranica. Od nečitljivih CAPTCHA slika, do matematičkih problema i sličnog.

Korisnici žele jednostavno upisati čim manje stvari i kliknuti Submit, sa što manje razmišljanja i ponavljanja zbog grešaka pri unosu. Pa pokazat ću vam, kako sa malo CSS i JavaScript trikova, možete izbjeći veliku većinu spama, a zadržati usability.

Prvo nam treba forma:

<form method="post" action="/submit.php">
<p>Ime:
<br /><input name="name" /></p>
<p>Email:
<br /><input name="email" /></p>
<p class="antispam">URL:
<br /><input name="url" /></p>
<textarea name="message"></textarea>
<input type="submit" value="Send" />
</form>

Da prvo objasnim kako funkcionira spam-bot. Kad naiđe na formu, skenira njena polja i pokušava predati tu formu sa spam sadržajem. U našem slučaju, kad bismo ostavili formu ovakvom, garantirano bismo dobili tonu spama. Pa, idemo prevariti botove.

Prvo ćemo običnom, ljudskom korisniku sakriti polje za unos URL-a uz pomoć malo CSS-a:

.antispam { display:none;}

Zatim napravimo kod u PHP-u koji, u osnovi, izbacuje svakoga tko je ispunio polje URL. Znači, korisnik to polje ne ispunjava, jer nije vidljivo, dok će ga bot vrlo rado ispuniti. Evo koda:

<?php
// ako je polje URL prazno
if(isset($_POST['url']) && $_POST['url'] == ''){
// pošalji mail
mail('your@yoursite.com','Contact Form',print_r($_POST,true));
}
// svejedno pokaži da je sve u redu
?>
<h1>Hvala</h1>
<p>Ubrzo ćemo Vam odgovoriti</p>
?>

Na ovaj način, PHP će se brinuti da pošalje samo regularan mail. Moram napomenuti da nijedna metoda za borbu protiv spama nije 100% sigurna, ali ova će vas sigurno zaštiti od velike većine botova, a vaši će vam korisnici biti zahvalni.

Označeno s:
Za ovaj članak možete glasati na CroPortalu i tako pomoći u njegovoj promociji. Ako članak još nije objavljen vi možete biti prvi!
Stavovi i mišljenja izrečena u ovome članku i/ili komentarima odnose se samo na autora/icu članka i/ili komentara, a ne i cijele Kroativ mreže. Zabranjeno je neovlašteno prenošenje članaka u cjelosti bez prethodnog dogovora ili bez istaknutog povratnog linka na www.kroativ.net stranicu te imena autora.
Oglas

4 komentara

  • weberica kaže:

    E super, ova tvoja serija članaka o formama je baš ono što mi treba 🙂

  • eno kaže:

    poštovani, može li ostatak koda za php akciju, hvala

  • Gost kaže:

    Poštovani, htjela bih samo pitati nemaju li onda slijepe osobe problema prilikom slanja poruka. Mislim da programi kojima se slijepi služe pri pretraživanju interneta čitaju kod, ne css pa bi i slijepe osobe zaporavo ispunile ista polja kao i spam, čime bi se njihove poruke ignorirale.

    • Zvonko kaže:

      @gost Ne mogu slijepi ljudi ispuniti to polje jer se ono ne vidi, mislim nema ga na ekranu. Ne mogu ga ispuniti.

      A može se dodati i label koji će slijepim osobima reći ćemu služi to polje.

Trackbacks & Pingbacks

Ostavite komentar

Autori s više od 10 komentara nemaju tag nofollow na svojim linkovima! Zabranjeno je vrijeđanje, omalovažavanje ili na bilo koji drugi način ometanje normalnog toka komentara. Također je zabranjeno oglašavanje u komentarima i sve druge vrste spam-a.

(*) polja su obavezna

XHTML: Možete koristiti: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">