Určitě Vás trápí ten otravný spam v diskusích, komentářích, při registraci, nebo při kontaktním formuláři na Vašem webu.
Existuje jednoduché a fikané řešení v JavaScriptu. Není moc, co o tom psát, ale ve zkratce popíšu funkčnost.
Na webu máte input, u kterého je napsáno, že máte napsat například číslo 1234 (nějak tajně, třeba tisíc-dvě stě -třicet čtyři). Jelikož by tento input ale návštěvníky otravoval, tak se do tohoto pole automaticky pomocí JavaScriptu vloží číslo 1234 a políčko se i s textem skryje (display: hidden).
V případě, že někdo má JavaScript vypnutý (do této skupinu patří roboti, třeba Google, jenž JavaScript neumí interpretovat), tak se mu zobrazí jak input, tak i text a musí toto políčko sám a ručně vyplnit. Jak účinné.
No a potom stačí jen v PHP vytvořit podmínku, že pokud v tom a tom inputu bylo yplněno správně číslo 1234, tak se bude dále ve skriptu pokračovat – odesláním dat do DB, nebo třeba e-mailu.
Abyste to ale neměli tak těžké, tak pro Vás níže přikládám plně funkční skript (s dovolením převzato z DJPW. Díky):
Do HTML formuláře stačí přiložit políčko
<p id="spamprotirobotum"> Ochrana proti spamu. Napište prosím číslo tisíc-dvě stě-třicet čtyři: <input type="text" name="robot" value="" id="protirobotum"> </p>
a kousek JavaScriptu, který doplní automaticky číslo a zneviditelní políčko (robotovi se JavaScriptová událost neprovede – neumí ho zpracovat). Ještě v JavaScriptu vkládané číslo trošku zošklivíme – musí se nejprve vynásobit (2×617, což je 1234) :
<script> /* vložíme do políčka číslo */ document.getElementById("protirobotum").value = 2 * 617; /* a poté políčko zneviditelníme */ document.getElementById("spamprotirobotum").style.display = "none"; </script>
A nakonec potom v PHP zjistíme, zda políčko obsahuje správné číslo (a do této podmínky dáme zbytek celého skriptu):
$robot = $_POST['robot']; //do proměnné uložíme obsah políčka if($robot == 1234){ //sem vložíte celý Váš PHP skript a pokud podmínka nebude splněna, nic se neprovede. }
To je vše 🙂