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/TEMPLA­TES/VAS_TEMPLA­TE/TEMPLATES/ si najděte soubor tpl_contact_us_de­fault.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/MODU­LES/PAGES/CON­TACT_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.");
}

Komentáře



Přidat komentář








Formát Texy