Skrytý INPUT s WWW nedá Robotům spát!
Na svých stránkách (nejčastěji kontaktní formulář) jsem problém rozesílání SPAMu řešil přidáním neviditelného pole Input (za pomocí CSS vlastnosti display: hidden) a toto pole pojmenoval například WWW. A po odeslání formuláře testoval, jestli toto pole zůstalo prázdné a nebo ho robot vyplnil. A věřte nebo ne, Robot ho vždycky nějakou tou svou URL vyplní. Toto je jeden přístup (originál jsem někde četl buď od @jantichy nebo @DavidGrudl), jak by se to mohlo i na PHPbb fóru řešit.
Ty nemáš JavaScript?
Našel jsem ale ještě jeden způsob a ten je postavený na faktu, že SPAM roboti nejsou obdařeni schopností spustit si na stránce JavaScript.
Návod vychází z článku PHPbb Anti Spam Module na blogu Jonahan.com.
Tento postup jsem zkoušel na forum pro modelky, které běží na PHPbb 3.
Stačí upravit 2 soubory: posting_body.html (styles/název_tématu/template/) a functions_posting.php (includes/)
posting_body.html
Najdeme si v souboru řádek s FORMem (u mě 36) a pod jeho tag vložíme část SCRIPT
<!-- IF not S_SHOW_PM_BOX -->
<form action="{S_POST_ACTION}" method="post" name="postform"{S_FORM_ENCTYPE}>
<script type="text/javascript">
var code = "4567";
document.write("<input type='hidden' name='spammersblow' value='" + code + "'>")
</script>
<!-- ENDIF -->
functions_posting.php
Najdeme v souboru funkci submit_post (u mě 1628) a upravíme následující kód takto:
if ($mode == 'post')
{
if ($_POST['spammersblow'] != '4567')
die("Error, you submitted the form wrongly and are most likely attempting to spam. If so, stop it. You are no good and a pox upon humanity.");
$post_mode = 'post';
$update_message = true;
}
A to je vše!
PS: Ano, pokud má někdo vypnutý JavaScript, tak si na vašem fóru ani neškrtne.
Pokud vám toto jednoduché řešení nestačí, tak doporučuji vlákno Anti-Spam Thread!, kde mnoho dalších možností, jak se SPAMu zbavit.
Něco málo o SPAMu ve WordPressu. http://www.zkusmo.cz/wordpress/internet-je-jeden-velky-spam
Díky za reakci. Akismet taky používám a můj blog chrání myslím dokonale :)