webmaster resource
+ Webmaster Forum von Webmaster-Resource.de » Sonstiges » Tutorials
|-+ Kontaktformular mit Validation
Username:
Password:

Seiten: [1]
Topic Tools  
Read 02. November 2007, 18:10:33 #0
Hohnemann

Kontaktformular mit Validation

Formmailer (edit) ohne gr. Code. Injections werden gleich im Voraus gekillt. Try it...
Code:
<html>
<head>
<title>Kontakt</title>
  </head>
<body>
<?php $browser $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
$ip $HTTP_SERVER_VARS['REMOTE_ADDR'];
$info=("<u>IP:</u> ".$ip." | <u>Browser:</u> ".$browser);
$farbe1 "transparent";  //... da wird noch einiges rot ... :D
$farbe2 "transparent";
$farbe3 "transparent";
$farbe4 "transparent";
$farbe5 "transparent";
// new bugfilter

function spamfilter($spam) {
$patterns = array("\\r""\\n""%0D""%0A""Content-Type:""MIME-Version:""Subject:""bcc:""cc:""Content-Transfer-Encoding:");

$finalremove=$spam;
$piece_front="";
$piece_back="";

   for (
$x=0$x count($patterns); $x++) {

   
$safety=0
# Prevents infinity loops if you accidentally put in replacements that match your patterns. it could happen! :) 
# The saftey could cause issues if you are replacing more than 100,000 occurrences in a string, so remove it if you trust it.

       
while(strstr(strtolower($finalremove),strtolower($patterns[$x]))) {
       
# find & remove all occurrence
       
       
$safety=$safety+1;
       if (
$safety >= 100000) { break; }

       
$occ=strpos(strtolower($finalremove),strtolower($patterns[$x]));
       
$piece_front=substr($finalremove,0,$occ);
       
$piece_back=substr($finalremove,($occ+strlen($patterns[$x])));
       
$finalremove=$piece_front "[SPAM_VERSUCH!]" $piece_back;
       } 
       
   } 

return 
$finalremove;



//bugfilter ENDE

?>


<div align="center"><h1>Kontakt</h1>
<a name="formular" id="formular"></a>
<br>
<?php 
$err
=array("Bitte Namen eingeben<br>""Name enth&auml;lt ung&uuml;ltige Zeichen<br>""Bitte eMail eingeben!<br>""Email enth&auml;lt ung&uuml;ltige Zeichen, bzw. Format stimmt nicht!<br>""Diese Email gibt es nicht !<br>""Betreff enth&auml;lt ung&uuml;ltige Zeichen<br>""Bitte Nachricht eingeben!<br>");

if(isset(
$_POST['reset']))
{
  unset(
$_POST['name']);
unset($_POST['email']);
unset($_POST['betr']);
unset($_POST['text']);
  
$name="";$email="";$betr="";$text="";
  }

if(isset(
$_POST['Senden']))
{
    
    
$spam strip_tags($_POST['name']);  //strip_tags zieht HTML und PHP code raus
    
$name spamfilter($spam);
    
    
$spam strip_tags($_POST['email']);
    
$email spamfilter($spam);
    
    
$spam strip_tags($_POST['betr']);
    
$betr spamfilter($spam);
    
    
$spam strip_tags($_POST['text']);
    
$text spamfilter($spam);
   
/// begin check
    
$error=0$errcount=0;
    
/////////////////
$name=trim($name);
if (empty($name)) 
{
        echo 
$err[$error]; 
        
$error++;  //counter der fehlerausgabe oben im array...
        
$errcount++;  //zaehlt tatsaechluche fehler
        
$farbe1 "red";  //fehlerfeld = rot
        
}
else
{
        
$error++; 
          if (!
ereg("^[]0-9a-zA-Z_@\.\,\!\$\&\\?\:\;\(\)\+\*\'\=\/ äöüÄÖÜß[-]+$"$name)) //prueft auf ungueltige zeichen
          
{
          echo 
$err[$error];
          
$errcount++;
          
$farbe1 "red";
          }
        }
  $error++; 
//////////////////////////
$email=trim($email);
if (empty($email))
        {
        echo
$err[$error];
        
$error++;
        
$error++;
        
$errcount++;
        
$farbe2 "red";
        }
        else
        {
        
$error++;
  if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$email)) //eregi erst ab php5!
   
  {
            echo 
$err[$error];
            
$error++;
            
$errcount++;
            
$farbe2 "red";
            }
            else
  {
            
$error++;
             list(
$userName$mailDomain) = split("@"$email); //teilt foo@bar.de in $userName=foo und $mailDomain=bar.de auf
              
if (!checkdnsrr($mailDomain"MX")) //checkt, ob es die mail ueberhaupt gibt (zumindest die domain)
              

              echo 
$err[$error]; 
              
$errcount++;
              
$farbe2 "red";
              }
            }
 }
         
$error++; //wir waeren dann bei der fehlerausgabe fuer den betreff
/////////////////////////////
        
$betr=trim($betr);
  if (!empty($betr)) //falls betreff vorhanden (muss ja nicht ;) )
{
          if (!
ereg("^[]0-9a-zA-Z_@\.\,\!\$\&\\?\:\;\(\)\+\*\'\=\/ äöüÄÖÜß[-]+$"$betr)) 
            {
            echo
$err[$error];
            
$errcount++;
            
$farbe3 "red";
            }
          }
  $error++; 
        
////////////////////////
    $text=trim($text);
  if (empty($text)) 
  {
          echo
$err[$error];
          
$errcount++;
          
$farbe4 "red";
          }
$error++;
 
/////////////////
echo"<b>Insgesamt <i>".$errcount."</i> Fehler!</b>";
  
//ende check

if ($errcount == 0)
              {
              echo
"<br>Vielen Dank! Mail wird versendet!<br>\n"
              
$header='From: foobar_kontaktformular';
              
$mailtext=(" Name: ".$name." \r\n Mail: ".$email." \r\n Betreff: ".$betr." \r\n Text: ".$text."\r\n".$info);
              
mail('admin@flp12.de'$betr$mailtext$header)  ////////anpassen!!
              
or die("Die Mail konnte nicht versendet werden.");
              echo 
"<meta http-equiv=\"refresh\" content=\"2; URL=http://WEBMASTER-RESOURCE.de/index.php\">";  ////////anpassen!!
              
exit;
              }
    
    }
   
 
?>

<form action="<?php echo $_SERVER['PHP_SELF']."#formular"?>" method="POST">
<table align="center" border="0">
  <tr>
    <td>Name </td>
    <td><input style="font-family:veranda,arial,helvetica; font-size:10pt; background-color:<?php echo $farbe1?>;" type="text" name="name" value="<?php echo $name?>"></td>
  </tr>
   <tr>
    <td>Email </td>
    <td><input style="font-family:veranda,arial,helvetica; font-size:10pt; background-color:<?php echo $farbe2?>;" type="text" name="email" value="<?php echo $email?>"></td>
  </tr>
  <tr>
    <td>Betreff </td>
    <td><input style="font-family:veranda,arial,helvetica; font-size:10pt; background-color:<?php echo $farbe3?>;" type="text" name="betr" value="<?php echo $betr?>"></td>
  </tr>
  <tr>
    <td>Nachricht </td>
    <td><textarea name="text" style="font-family:veranda,arial,helvetica; font-size:10pt; background-color:<?php echo $farbe4?>;" name="text" rows="8" cols="25"><?php echo $text?></textarea></td>
  </tr>
</table>
<center>
  <small>Name, Text und eMail sind Pflichtfelder!</small><br>
<input name="Senden" type="submit" value="Senden" /> <input name="reset" type="submit" value="Zur&uuml;cksetzen" onClick='return confirm("Wollen Sie die Eingaben wirklich löschen?");'>
</center>
</form>
</body>
</html>
« Letzte Änderung: 04. November 2007, 17:36:16 von Hohnemann »
Offline  
Read 02. November 2007, 19:12:36 #1
» тнє $υι¢ι∂є « ™

Re: Kontaktformular mit Validation

altmodisch + unsicher


Offline  
Read 02. November 2007, 19:48:14 #2
Hohnemann

Re: Kontaktformular mit Validation

dann lösch den Dreck einfach
Offline  
Seiten: [1]
Gehe zu: