ANTI SPAM Formular Beispiel

Startseite Spamschutz



counter


Ab hier stehen die Scripte, die akteull für dieses Formular genutzt werden
Mit Hilfe dieser Scripte lassen sich SPAM und HACK -Attacken auf das Formular
reudzieren

<?/*** KontaktFormular.php ***/
session_start();
	// den Zufallscode für das captcha erzeugen 
 	// wird auch für die Kontrolle ob das Formular von der Startseite aus
	// angesprochen wurde genutzt.
	$t=time()*1000;
	mt_srand($t);
	session_start();
	$_SESSION['random']=mt_rand(111111,999999);
	$include='formular.html';
echo "<?xml version=\"1.0\"?>";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>ANTI SPAM Formular Beispiel</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <style type="text/css">
    <!--
        *{margin:0;padding:0;}
        body{text-align:center;background-color:whitesmoke; color:navy;font-size:100%;}
        div{text-align:left;}
        #haupt{margin:0 auto;width:80%;padding:2em;font-size:1.2em;}
        .sub{
            margin-left:2em;
        }
        form{
            width:60%;
            border:1px solid white;
            color:navy;
            float:left;
            padding:1em;
        }
        label{width:30%;float:left;}
        input{float:left;}
        img{float:left;margin-right:2em;}
        .cl{clear:both;}
        .form{
            margin:2em auto;
            border:1px solid navy;            
            border-radius:5px;
        }
        .err{
            background-color:white;
            color:red;
            border:1px solid red;
            padding:0.5em;
            margin-top:2em;
        }
        .pre{
            color:navy;
            background-color:white;
            text-align:left;
            margin-bottom:2em;
            padding:1em;
            border:1px solid navy;
            border-radius:5px;            
        }
        .hr{
        clear:both;
        margin-top:1em;
        margin-bottom:1em;
        }
        .hidden{
            display:none;
        }
    //-->
    </style>
  </head>
  <body>
    <div id='haupt'>
        <h2>ANTI SPAM Formular Beispiel</h2>
	<a href='index.html' title='Spamschutz'>Startseite Spamschutz</a><br />
    
      <?

        if($message)
            echo '<pre class=err>',$message,'</pre>';
        if($include)
            include($include);
        echo"    
        <p>
            Ab hier stehen die Scripte, die akteull für dieses Formular genutzt werden<br />
            Mit Hilfe dieser Scripte lassen sich SPAM und HACK -Attacken auf das Formular<br />
            reudzieren<br />
            <br />
        </p> 
        ";           
        //*
    ?>         
    </div>
    <p>
      <br />
      <br />
      [copy rights &copy; <a href='http://www.oxxo.de'>www.oxxo.de</a> 2006]
      <br />
      <br />
    </p>    

  </body>
</html>
        

<?
/*** controlFormular.php ***/
        // prüfen auf BAD WORDS / STOP Worte
function badword_proof($TXT){
    $badwordList = file('badword.txt');
    $pcre=array();
        foreach($badwordList as $badword){
		    $badword=trim($badword);
            $CurrPcre='/(\b)([^a-z0-9]*';
            for($i=0;$i<strlen($badword);$i++)
            $CurrPcre.=sprintf('%s+[^a-z0-9]*',$badword{$i});
            $CurrPcre.=')([^\b]*?)(\b)/smi';
            $pcre[]=$CurrPcre;
        }// foreach
            
		foreach($pcre as $pcreStr){
    	    preg_match_all($pcreStr,$TXT,$array);
            if(!empty($array[0]))
                return TRUE;
        }// foreach 
        if(empty($array[0])){
            return FALSE;
        }else{
            return TRUE;
        }
}//function badwort

$FPOST=$_POST;

function controlForm($FPOST, $formElements){
              global $errM;
          
        //#1 prüfen ob USER AGENT UND HTTP_REFERER existieren
        if(!$_SERVER['USER_AGENT'] AND !$_SERVER['HTTP_REFERER']){
            $errM['spam']="1: Verarbeitung wegen Spamverdacht abgewiesen";
        }                                    
        //#2a prüfen der anzahl der formularelemente
        if(count($FPOST)!=2 OR count($FPOST['formData'])!=5){
            $errM['spam']="2a: Verarbeitung wegen Spamverdacht abgewiesen";
        }
        //#2b prüfen, ob array-schlüssel von POST-soll zu POST-ist eine differenz haben
        $postElements=array_keys($_POST);
        foreach($FPOST as $element){
            if(is_array($element))
                $postElements=array_merge($postElements,array_keys($element));
        }// foreach
        
        //#3 lediglich die Benennung der Formularfeldnamen
        
        $formElementsDif=array_diff($postElements,$formElements);
        $postElementsDif=array_diff($formElements,$postElements);
        if(count($formElementsDif)>0 OR count($postElementsDif)>0){
            $errM['spam']="2b: Verarbeitung wegen Spamverdacht abgewiesen";
        }                
        //#4 die FALLE prüfen
        if(trim($_POST['email'])!=9999){
            $errM['spam']="4: Verarbeitung wegen Spamverdacht abgewiesen";
        }            
        //#5  BadWord Kontrollieren
        foreach($FPOST['formData'] as $TXT){
            if(badword_proof($TXT)){
                $errM['spam']="5: Verarbeitung wegen Spamverdacht 
                                      oder unzulässiger Begriffe abgewiesen";
            }
        }//foreach            
            
        //#6 Das Captcha, den Zufallscode aus session mit dem formular inhalt prüfen
        if(trim($FPOST['formData'][3])!=$_SESSION['random']){
            $errM['spam']="6: Verarbeitung wegen Spamverdacht abgewiesen: 
            Ziffer falsch.: ".$_POST['formData'][3]." : ".$_SESSION['random'];
        }            
        //#7 Captach Rechenaufgabe - nicht genutzt, da BILD Captach genutzt.
            
        //#8 zählen der Anzahl möglicher Emailadressen / Tilden zählen
        if(@substr_count($FPOST['formData'][1],"@")>1){
            $errM['spam']="8: Verarbeitung wegen Spamverdacht abgewiesen";            
        }                            
        //#9 Den Kontrollwert aus der session der startseite prüfen
	    if( $_SESSION['random']<111111 OR  $_SESSION['random']>999999){ 
            $errM['spam']="9: 
                Verarbeitung wegen Spamverdacht abgewiesen<br />
                Wenn Sie nicht über die Startseite 
                <a href='http://www.oxxo.de/spam-blocking/index.html'>SPAMSCHUTZ</a><br/>
                gekommen sind. Gehen Sie zuerst auf die Startseite.<br/>
                Von dort  zum Beispiel Formular.<br/>
            ".$_SESSION['formControll'];
        }
        //#10 $_GET - Variablen prüfen
        IF(count($_GET)>0){            
            $errM['spam']="10: Verarbeitung wegen Spamverdacht abgewiesen";
        }                        
        // - Spam unabhängige Formularfeldprüfungen
        // prüfen aller formularfeldinhlte auf länge > 3 zeichen. beliebig wählbar
        foreach($FPOST['formData'] as $val){
            if(strlen($val)<3)
                $errM['zeichen']="11: Bitte füllen Sie alle Felder aus, min. 3 Zeichen";
        }// foreach
        
        // prüfen, ob emailadresse gültig
        $pattern = '/^[a-zA-Z0-9\.\-_]{1,}@[a-zA-Z0-9\.\-_]{1,}\.[a-zA-Z]{2,4}$/i';
        if(!preg_match($pattern,$FPOST['formData'][1])){
            $errM['mail']="12: Keine gültige Email-Adresse  !";
        }                        
        // existiert ein fehler, existiert auch $errM, es wird FALSE zurückgegeben
        // ansonsten TRUE

        if($errM){
            return FALSE;
        }else{
            return TRUE;
        }            
}// function

?>
        

<!--formular.html-->
            <div class='form'>               
               <form method='post' action='Auswertung.php'>
                    <label>Name</label>
                    <input type='text'   name='formData[0]' value='' />
                    <br class='cl' />
                    <label>Email</label><input type='text' name='email' value='9999' class='hidden'/>
                    <input type='text'   name='formData[1]' value='' />
                    <br class='cl' />
                    <label>Nachricht</label>
                    <textarea name='formData[2]'></textarea>
                    <br class='cl' />                    

                    <label>Ziffer:</label>
                    <input type='text'   name='formData[3]' value='' />
                    <img src='bild.php' alt='counter' />
                    <br class='cl' />  
                    <input type='submit' name='formData[4]' value='Ab gehts' />
                    <br class='cl' />
                </form>
                <br class='cl' />                  
            </div>

        

<?
/*** bild.php ***/
		// den image header setzen
                header ("Content-type: image/png");
		// session starten
                session_start();
		// die zufalsszahl holen
                $dataS=$_SESSION['random'];
		//erzeugen eines bildes in den abmessungen 60 x 20 px
                $im = @ImageCreate (60, 20)
                  or die ($dataS);
		// die hintergrundfarbe bewtimmen
                $background_color   = ImageColorAllocate ($im, 180, 180, 180);
		// die pixelfarbe bestimmen, mit der auf dem bild 'gemalt' wird
                $colorPix           = ImageColorAllocate ($im, 200, 200, 200);
		// ein pixelraster über das bild legen
                $y=3;
                WHILE($y<20){
                    $x=3;
                    WHILE($x<60){
                        imagesetpixel($im, $x, $y, $colorPix);  
                    $x=$x+3;      
                    }
                    $y=$y+3;    
                }
		// eine neue pixelfarbe bstimmen
                $colorPix           = ImageColorAllocate ($im, 180, 180, 180);
		// ein weiteres pixelraster über das bild legen
                $y=2;
                WHILE($y<20){
                    $x=2;
                    WHILE($x<60){
                        imagesetpixel($im, $x, $y, $colorPix);  
                    $x=$x+3;      
                    }
                    $y=$y+3;    
                }               
		// die textfarbe bestimmen 
                $text_color = ImageColorAllocate ($im, 235, 235, 235);
		// die zufallszahl auf das bild schreiben
                ImageString ($im, 5, 3, 3,rtrim($dataS), $text_color);
		// eine neue pixelfarbe bestimmen
                $colorPix           = ImageColorAllocate ($im, 160, 160, 160);
		// ein weiteres raster über das bild mit der schrift legen
                $y=1;
                WHILE($y<20){
                    $x=1;
                    WHILE($x<60){
                        imagesetpixel($im, $x, $y, $colorPix);  
                    $x=$x+3;      
                    }
                    $y=$y+3;    
                }
		// das bild ausgeben
                ImagePNG ($im);
?>
        

Casino
Poker
Roulette
<script
[url]
        

<?session_start();

/*** Auswertung.php ***/
$FPOST=$_POST;

            //formularelemtentname in array packen:
            $formElements=array("formData",0,1,2,3,4,"email");
            //prüfen, ob das Formular gesendet wurde
            if(isset($FPOST['formData'][4])){
                // wenn ja, das kontrollscript laden,
                include('controlFormular.php');
                if(!controlForm($FPOST,$formElements)){ 
                    // wenn ein fehler existiert, wird die fehlermedlung ausgegeben
                    $message=implode("<br />",$errM);
                }else{
                    //  Formularverarbeitung  wenn alles OK
                    //  z.B. mail versenden oder eintragn id datei oder datenbank
                    $formOK=TRUE;
                    }
                // prüfen ob alles OK wenn ja weiterleiten, wenn nicht formular laden
                if(!$formOK){
                    $include='KontaktFormular.php';
                    
                }else{
                    // wenn alles OK gelaufen ist weiterleiten zur danke.html 
                    header('Location:danke.html');
                    exit;
                }
            }else{
                //wenn das Formular nicht gesendet wurde weiterletien zum Kontaktformular
                header('Location:KontaktFormular.php');
                exit;
            }  
            if(file_exists($include)){

                include($include);
            }else{
                //wenn datei aus include NICHT erreichbar ist, Fehlermeldung:
                echo " Es ist ein Fehler aufgetreten.";
            }
?>
        

<?echo "<?xml version=\"1.0\"?>";?>
<!--danke.html-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>Danke für Ihre Nachricht</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  </head>
  <body>
        <div>
            Vielen Dank für Ihre Nachricht.<br />
            Über diesen Link kommen Sie zurück zur Startseite.
            <a href='index.html'>HOME</a>
        </div>
  </body>
</html>
        



[copy rights © www.oxxo.de 2006]