Habe Spamschutz Standard Kontaktformular

Gesperrt
php0815
Beiträge: 373
Registriert: Mi 26. Okt 2005, 12:12
Wohnort: Schwarzwald
Kontaktdaten:

Habe Spamschutz Standard Kontaktformular

Beitrag von php0815 »

Habe ein kleiner Spamschutz im Standard Kontaktformular mit einer Rechenaufgabe gelöst.
Ein Beispiel gibt es hier laufsport-mueller

Einfach folgende Dateien ersetzen

Style -> Module -> Contakt_Form.php Output

Code: Alles auswählen

<?php
/**
* $RCSfile$
*
* Description: Contact Form Output
*
* @version 1.0.0
* @author Andreas Lindner
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2005-08-12
* modified 2008-04-11 Rudi Bieller Changes concerning new layout
* }}
*
* $Id$
*/

#Includes
cInclude("classes", "class.phpmailer.php");

if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

if (!isset ($_POST['send'])) {
    #Form has not been sent yet
    cInclude('classes', 'class.article.php');
    cInclude('classes', 'class.template.php');
//------------------------------------------------------------------------------
$zahl1 = rand(1, 10);
$zahl2 = rand(1, 10);
$ergebnis = ($zahl1 + $zahl2);
//------------------------------------------------------------------------------

    #Create contact form
    $sFormAction = $sess->url("front_content.php?idcat=$idcat&idart=$idart&parentid=$parentid");
    $tpl->set("s", 'form_action', $sFormAction);
    $tpl->set("s", 'ERGEBNIS', $ergebnis);
    $tpl->set("s", "ANREDE", mi18n("Anrede"));
    $tpl->set("s", "ANREDE_OPTION1", mi18n("Herr"));
    $tpl->set("s", "ANREDE_OPTION2", mi18n("Frau"));
    $tpl->set("s", "NACHNAME", mi18n("Name"));
    $tpl->set("s", "VORNAME", mi18n("Vorname"));
    $tpl->set("s", "FIRMA", mi18n("Firma"));
    $tpl->set("s", "STRASSE", mi18n("Straße/Nr."));
    $tpl->set("s", "PLZORT", mi18n("PLZ/Ort"));
    $tpl->set("s", "TELEFON", mi18n("Telefon"));
    $tpl->set("s", "EMAIL", mi18n("E-Mail"));
    $tpl->set("s", "ANLIEGEN", mi18n("Nachricht"));
    $tpl->set("s", "SPAMTEXT", "Ergebniss Bitte eintragen:");
    $tpl->set("s", 'SPAMSCHUTZ_1', $zahl1);
    $tpl->set("s", 'SPAMSCHUTZ_2', $zahl2);
    $tpl->set("s", "PFLICHTFELDER", mi18n("Bitte alle Felder ausfüllen"));
    $tpl->set("s", "ABSCHICKEN", mi18n("abschicken"));
    $tpl->set("s", "LOESCHEN", mi18n("löschen"));

    $tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/kontaktformular.html");
} elseif ($_POST['send'] == 1) {
    #Form has been sent

    #Check user input
    $noerrors = true;
    $msg = '';
    $test1 = $_POST['spam'];
    $test2 = $_POST['ergebnis'];
	if ($_POST['spam'] <> $_POST['ergebnis']) {
		$noerrors = false;
    $msg .= mi18n("Bitte Rechnen sie richtig!")."<br/>";
	}	
    if ($_POST['Vorname'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Vornamen ein!")."<br/>";
    }
    if ($_POST['Nachname'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Namen ein!")."'<br/>";
    }
    if ($_POST['EMail'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre E-Mail-Adresse ein!")."<br/>";
    }
    if ($_POST['Strasse'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre Stra&szlig;e ein!")."<br/>";
    }
    if ($_POST['PLZOrt'] == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre PLZ/Ort ein!")."<br/>";
    }

    if ($noerrors == false) {
        echo "<p>";
        #Errors have been found
        echo "<strong>".mi18n("Beim Versenden sind folgende Fehler aufgetreten:")."</strong><br/>";
        echo $msg.'<br/>';
        echo '<a href="javascript:history.back();">&lsaquo; '.mi18n("zur&uuml;ck").'</a>';
    } else {
        #No errors, create and send mail
        $mail = new phpmailer;
        $mail_body = '<html><head></head><body bgcolor="#ffffff"><table cellspacing="0" cellpadding="2" border="0">';

        if (is_array($_POST)) {
            foreach ($_POST as $key => $value) {
                if ($key != 'send') {
                    $mail_body .= "<tr><td>$key</td><td>$value</td></tr>";
                }
            }
        }

        $mail_body .= '</table></bo'.'dy></html>';
        $mail->Host = "localhost";
        $mail->IsHTML(true);

        #Get mailer from settings
        switch (strtolower("CMS_VALUE[4]")) {
            case "smtp" :
                $mail->IsSMTP();
                $host = "CMS_VALUE[5]";
                $user = "CMS_VALUE[6]";
                $password = "CMS_VALUE[7]";
                if (($host != '') && ($user != '') && ($password != '')) {
                    $mail-> $SMTPAuth = true;
                    $mail->Host = $host;
                    $mail->Username = $user;
                    $mail->Password = $password;
                }
                break;
            case "mail" :
                $mail->IsMail();
                break;
            case "sendmail" :
                $mail->IsSendmail();
                break;
            case "qmail" :
                $mail->IsQmail();
                break;
            default :
                }
        $mail->From = "CMS_VALUE[0]";
        $mail->Sender = "CMS_VALUE[0]"; 
        $mail->FromName = "CMS_VALUE[2]";
        $mail->AddAddress("CMS_VALUE[1]", "");
        $mail->Subject = "CMS_VALUE[3]";
        $mail->Body = $mail_body;
        $mail->WordWrap = 50;
        $mail->Send();
    
        #Display message after mail is sent
        echo mi18n("Ihr Anliegen wurde uns übermittelt. Vielen Dank!")."<br/>";
    }
}
?>
Style -> Modul-Templates -> kontaktformular.html

Code: Alles auswählen

<div id="contactForm">
    <form action="{form_action}" method="post">
        <input type="hidden" name="send" value="1" />
        <input type="hidden" name="ergebnis" value="{ERGEBNIS}" />
        <div class="contactRow clearfix">
            <table>
                <tr>
                    <td class="pt" style="width:80px;"><label for="Anrede">{ANREDE}</label></td>
                    <td style="width:10px;"><input type="radio" name="Anrede" value="{ANREDE_OPTION1}" id="Anrede" checked="checked" style="width:auto;border:0;" /></td>
                    <td class="pt">{ANREDE_OPTION1}</td>
                    <td style="width:10px;"><input type="radio" name="Anrede" value="{ANREDE_OPTION2}" style="width:auto;border:0;" /></td>
                    <td class="pt">{ANREDE_OPTION2}</td>
                    <td class="pt" style="text-align:right;">* {PFLICHTFELDER}</td>
                </tr>
            </table>
        </div>
        <div class="contactRow clearfix">
            <label for="Vorname">{VORNAME} *</label>
            <input type="text" name="Vorname" id="Vorname" class="eingabe" maxlength="100"/>
        </div>
        <div class="contactRow clearfix">
            <label for="Name">{NACHNAME} *</label>
            <input type="text" name="Nachname" id="Nachname" class="eingabe" maxlength="100"/>
        </div>
        <div class="contactRow clearfix">
            <label for="Firma">{FIRMA} </label>
            <input type="text" name="Firma" id="Firma" class="eingabe" maxlength="100"/>
        </div>
        <div class="contactRow clearfix">
            <label for="Strasse">{STRASSE} *</label>
            <input type="text" name="Strasse" id="Strasse" class="eingabe" maxlength="100"/>
        </div>
        <div class="contactRow clearfix">
            <label for="PLZOrt">{PLZORT} *</label>
            <input type="text" name="PLZOrt" id="PLZOrt" class="eingabe" maxlength="100"/>
        </div>
        <div class="contactRow clearfix">
            <label for="Telefon">{TELEFON} </label>
            <input type="text" name="Telefon" id="Telefon" class="eingabe" maxlength="100"/>
        </div>
        <div class="contactRow clearfix">
            <label for="EMail">{EMAIL} *</label>
            <input type="text" name="EMail" id="EMail" class="eingabe" maxlength="100"/>
        </div>
        <div class="contactRow clearfix">
            <label for="Anliegen">{ANLIEGEN} </label>
            <textarea name="Anliegen" id="Anliegen"></textarea>
        </div>      
        <div class="spamForm clearfix">
            <label for="Spamtext">{SPAMTEXT} </label>
            <label for="Spamschutz">{SPAMSCHUTZ_1} + {SPAMSCHUTZ_2} </label>
            <input type="text" name="spam" id="spam" class="eingabe" maxlength="2"/>
            
        </div>
        <div id="contactFormSubmit" class="clearfix">
            <div id="contactFormSubmitLeft">
                <input type="reset" value="{LOESCHEN}" />
            </div>
            <div id="contactFormSubmitRight">
                <input type="submit" value="{ABSCHICKEN}" />
            </div>
        </div>
    </form>
</div>
in der Standard CSS Datei wird noch folgendes hinzugefügt.
Die width Angabe ist dafür da das das Feld eine andere Breite hat
man kann es natürlich auch noch schöner machen wenn man will.

Code: Alles auswählen

#contactForm .spamForm input {
    height:14px;
    width:46px;
}
In der Ruhe liegt die Kraft den wer suchet der findet
Wer Rechtschreibfehler findet kann sie behalten, Codefehler können gemeldet werden.
Gesperrt