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 © <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]