fastix®: Spam-Versand über ein online-Formular

Beitrag lesen

Moin Christian! Auch schon aufgewacht? Das Problem hatten wir doch schon neulich... hier die damals schon vorgestellte Lösung:

  
  
<?php  
# jrubin3456.inc.php  
  
function jrubin3456($intMaxAllowed, $strFields) {  
   # Übergeben Sie dieser Funktion als Int wieviele Formularfelder ein  
   # '@' enthalten dürfen sowie als  String eine Komma-separierte  
   # Liste aller Rückgaben von Formularfeldern, die einzeilig sein sollen.  
   # Die Funktion liefert ein true zurück, wenn in den Feldern Zeilenumbrüche  
   # vorkommen oder die zulässige Anzahl der Felder mit einem '@' überschritten wird  
  
   # Beispiel eines Aufrufs:  
   #  
   /*  
 if (jrubin3456(2, 'name,email,firma,position')) {  
    header("HTTP/1.0 403 Forbidden");  
    die("Spam attempt denied");  
 }  
   */  
   if ((!isset($strFields)) || (trim($strFields)=='')) {  
    die ("Error: in function jrubin3456: Es wurden keine Feldnamen übergeben");  
   }  
  
  
   $arFields=explode(',', $strFields);  
   if ($intMaxAllowed > count($arFields)) {  
    die ("Error: in function jrubin3456: Die Anzahl der erlaubten Felder mit @ ist größer als die Anzahl der Felder.");  
   }  
  
 $intFoundAet=0;  
 foreach ($arFields as $strField) {  
        $strField = trim ($strField);  
  
 if (isset($_POST[$strField])) {  
  if ((strpos($_POST[$strField],"\n")) || (strpos($_POST[$strField],"\r"))) {  
   return true;  
  }  
  if (strpos($_POST[$strField],'@')) {  
   $intFoundAet++;  
  }  
 }  
  
 if (isset($_GET[$strField])) {  
  if ((strpos($_GET[$strField],"\n")) || (strpos($_GET[$strField],"\r"))) {  
   return true;  
  }  
  if (strpos($_GET[$strField],'@')) {  
   $intFoundAet++;  
  }  
 }  
  
 if ($intFoundAet > $intMaxAllowed)  
  return true;  
 }  
  
  
}  
  
?>  
  
  
  
<?php  
  
function jrubin3456($intMaxAllowed, $strFields) {  
   # Übergeben Sie dieser Funktion als Int wieviele Formularfelder ein  
   # '@' enthalten dürfen sowie als  String eine Komma-separierte  
   # Liste aller Rückgaben von Formularfeldern, die einzeilig sein sollen.  
   # Die Funktion liefert ein true zurück, wenn in den Feldern Zeilenumbrüche  
   # vorkommen oder die zulässige Anzahl der Felder mit einem '@' überschritten wird  
  
   # Beispiel eines Aufrufs:  
   #  
   /*  
 if (jrubin3456(2, 'name,email,firma,position')) {  
    header("HTTP/1.0 403 Forbidden");  
    die("Spam attempt denied");  
 }  
   */  
   if ((!isset($strFields)) || (trim($strFields)=='')) {  
    die ("Error: in function jrubin3456: Es wurden keine Feldnamen übergeben");  
   }  
  
  
   $arFields=explode(',', $strFields);  
   if ($intMaxAllowed > count($arFields)) {  
    die ("Error: in function jrubin3456: Die Anzahl der erlaubten Felder mit @ ist größer als die Anzahl der Felder.");  
   }  
  
 $intFoundAet=0;  
 foreach ($arFields as $strField) {  
  
 $strField = trim ($strField);  
  
 if (isset($_POST[$strField])) {  
  if ((strpos($_POST[$strField],"\n")) || (strpos($_POST[$strField],"\r"))) {  
   return true;  
  }  
  if (strpos($_POST[$strField],'@')) {  
   $intFoundAet++;  
  }  
 }  
  
 if (isset($_GET[$strField])) {  
  if ((strpos($_GET[$strField],"\n")) || (strpos($_GET[$strField],"\r"))) {  
   return true;  
  }  
  if (strpos($_GET[$strField],'@')) {  
   $intFoundAet++;  
  }  
 }  
  
 if ($intFoundAet > $intMaxAllowed)  
  return true;  
 }  
  
  
}  
  
?>  
  
<?php  
# mailsenden.php  
  
# in trauernden Andenken an jrubin3456, der mich einst genervt hat und dieses Muster mit  
# wechselnden Adressen wiederholt...  
include 'jrubin3456.inc.php';  
  
if (jrubin3456(2, 'formelement_1,formelement_2,formelement_3,formelement_4,...,subject,senderadresse')) {  
 #header("HTTP/1.0 403 Forbidden");  
 #die("Spam attempt denied");  
 header("HTTP/1.1 301 Moved Permanently");  
 header("Location: http://127.205.107.112");  
 header("Connection: close");  
 exit;  
}  
  
# Der Rest Deines Mailskriptes  
  
?>  

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development