Odjakživa používám captcha, protože debaty, že to zdržuje, jsem vzhledem k časový náročnosti třeba kontrolní otázky nějak vůbec nepochopil. A stále se mi to i v rámci dalších možností (JavaScript, skrytá políčka...) zdá jako nejúčinnější řešení, a to i nadlouho.
Přístupnost řešim tak, že je možnost příspěvek poslat na e-mail.
Celkom ma prekvapila služba http://tools.rosinstrument.com/cgi-bin/wi.pl - po zadaní mojej IP vyhodilo nielen krajinu, ale mesto a inštitúciu, z ktorej som vykonal požiadavku, dokonca aj osobu zodpovednú za sieť a množstvo informácií :-)
Napadlo ma možné ďalšie riešenie, ale závislé na JavaScripte. Bola by to ochrana založená na použití udalosti onFocus - každá živá bytosť, ktorá chce pridať príspevok predsa musí myšou kliknúť do všetkých poličiek, ktoré je potrebné vyplniť! JavaScript sa potom postará o odoslanie alebo neodoslanie príspevku. Vyriešil by sa aj problém, či je príspevok napísaný priamo do text inputov(alebo do textarey), alebo bol napísaný v notpade a následne kopírovaný do formulára(čo by mohlo kolidovať s časovou kontrolou).Čo vy na to?
barguzin: zkoušel sem použít ono GeoIP a nepomohlo to (napřed sem měl chybu ve skriptu, ale i když sem ji odstranil, pořád mi to chytalo jen některé roboty), tak sem se podíval po netu a velmi mi pomohlo toto:
http://php.vrana.cz/ochrana-formularu-proti-spamu.php
taky je to závislé na JavaScriptu, ale kdo ho má, ten nepozná rozdíl oproti normálu, kdo ho nemá, musí vyplnit určité slovo. Toto mi přišlo zatím jako nejlepší možnost, kterou sem kde našel, a dodneška tím neprošel ("úspěšně") jedinej robot.
Na hodně spambotů zabere přidání neviditelného odesílacího tlačítka. Většina robotů totiž použije první, na které narazí.
<input type="submit" name="robot" style="display: none;" />
<input type="submit" value="Odeslat"/>
if(isset($_POST['robot'])) die('spam');
Nejlepší a nejúčinnější co jsem zatím viděl je tohle:
Jaký je dnes rok? <INPUT type='text' name='rok'>
Roboti to zatím neznaj a tenhle údaj snad umí doplnit i úplný dub a je to velmi jednoduché :+)
Akorát s tím bude problém kolem silvestrovského přechodu na nový rok.
Zjisteni IP $_SERVER['REMOTE_ADDR']; to si nech treba zapisovat do souboru + date("d.m.Y : H:i:s"); mas hned i kontrolu kdy se co stalo a potom vypis na http://www.ripe.net/perl/whois?form_type=simple&full_query_string=&searchtext=xxx.xxx.xxx.xxx
Pak je dobre jak uz tu bylo receno vytorit prazdny input do ktereho robot zapisuje a to testovat zda je prazdne nebo plne.