Formmailer (edit) ohne gr. Code. Injections werden gleich im Voraus gekillt. Try it...
<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ält ungültige Zeichen<br>", "Bitte eMail eingeben!<br>", "Email enthält ungültige Zeichen, bzw. Format stimmt nicht!<br>", "Diese Email gibt es nicht !<br>", "Betreff enthält ungü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ücksetzen" onClick='return confirm("Wollen Sie die Eingaben wirklich löschen?");'>
</center>
</form>
</body>
</html>