Zamezení spamu přes formulář v zencartu
Vydáno: 22.05.08 Kategorie:
Dnes jsem řešil otázku, jak zamezit robotům ve spamování přes formuláře v zencartu. Přeci jen stahovat denně desítky zpráv na viagru nebo prodoužení přirození není moje gusto :)
Na stránkách jsem nechtěl žádnou captchu a podobné vychytávky, protože dobře vím jak mě se.ou když to mám někde vyplňovat. Nakonec jsem si řekl, že to zkusím přes javascript neboť již podobné řešení využívám u svých aplikací.
Takže ve složce INCLUDES/TEMPLATES/VAS_TEMPLATE/TEMPLATES/ si najděte soubor tpl_contact_us_default.php a před
<div class="buttonRow forward"><?php echo
zen_image_submit(BUTTON_IMAGE_SEND, BUTTON_SEND_ALT); ?></div>
vložte
<span id="spamprotirobotum">Anti-spamová otázka: Jaký je opak dne?<input type="text" name="robot" value="" id="protirobotum" /></span>
<script type="text/javascript">
document.getElementById("protirobotum").value="noc";
document.getElementById("spamprotirobotum").style.display = "none";
</script>
Javascript se postará o to, že se input skryje a doplní požadovanou hodnotou. Pro ty co mají vypnutý javascript pak bude platit, že musí doplnit hodnotu sami.
Dále potom ve složce /INCLUDES/MODULES/PAGES/CONTACT_US vyberte header_php.php a za řádek 17 přidejte
$kontrola = zen_db_prepare_input($_POST['robot']);
na řádku 22 pak nahraďte
if ($zc_validate_email and !empty($enquiry) and !empty($name)) {
za
if ($zc_validate_email and !empty($enquiry) and !empty($name) and ($kontrola=="noc")) {
a dále na řádek 69 vložte
if ($kontrola!="noc") {
$messageStack->add('contact', "Pozor, kontrola proti spamu neprošla. Máte-li vypnutý javascript, doplňte odpověď na otázku.");
}