<?php
#########################################################################
#		Dieses Script ist Freeware und kann verändert werden			#
#		solange dieser Copyrightvermerk nicht entfernt wird!			#
# 		Es ist ein leicht veränderbarer Webmailer.  					#
#		Support: mail to support => git-development.com					#
#  		All rights by Global IT Development (Stefan Schwiedel)			#
#  		Version 1.4														#
#		Falls Sie Bugs entdecken schreiben Sie bitte ins Forum oder 	#
#		senden Sie mir eine Mail mit Fehlerbeschreibung.				#
#		Anregungen, Kritiken, Wünsche bitte ins Forum unter:			#	
#		http://www.git-development.com/global-it-community.htm			#
# 		Danke!															#
#########################################################################

######################################################################################################
#	Beginn der Konfiguration 											   							 #
######################################################################################################

# Hier können Sie die benötigten Felder eingeben. Bitte nutzen Sie die gleiche Syntax, 
# da sonst das Script nicht funktioniert. 
# Bsp. $fields = array("Name" => 1);
# Die jeweilige Zahl hinter dem Feldnamen schaltet die Prüfroutinen ein oder aus.
# Achtung! Der Inhalt des Feldes der Prüfroutine "2" wird automatisch als Antwortadresse im Header 
# der Mail eingetragen. Eine Namensvorgabe für das E-Mailfeld besteht nicht.
# 0 für "keine Prüfung				
# 1 für "Feld darf nicht leer sein" 
# 2 für "Mailprüfung"				
# 3 für "Postleitzahl"				
# 4 für "Telefonnummer" (nur Zahlen sind erlaubt siehe $phone_min  und $phone_max)
# 5 für "Website" Bitte vor Einsatz testen ob die gewünschten Domains zugelassen werden. 
#				  Andernfalls melden Sie sich bitte im Forum.
# 6 Das Feld darf nur Buchstaben enthalten.
# 7 Das Feld darf nur Zahlen enthalten.

$fields = array("Name" => 1, 
				"Vorname" => 1,
				"Adresse" => 1,
				"email" => 2,
				"PLZ" => 3,
				"Telefon" => 0,
				"Website" => 0
				);
				
# Tragen Sie hier die Anzahl der Felder ein. 
# Vergessen Sie nicht das Textfeld mitzuzählen falls Sie es aktivieren.
# Sollte die Zahl nicht stimmen wird das Formular nicht gesendet.
$k = "8";				

# Tragen Sie hier die gewünschte Größe der Felder ein.
$inputsize = 20;
		
# Schalten Sie diese Funktion ein (1) oder aus (0)
$send_ip = "1";		// sendet die IP Adresse des Absenders
$f5 = "0"; 		// erlaubt ein neuladen der Seite wodurch die Daten nocheinmal gesendet werden.
				// Schalten Sie diese Funktion auf "0", wenn sie häufig doppelte Mails erhalten.
				//Achten Sie bei Fehlermeldungen auf unsere Hinweise im Forum.

# Hier können Sie die Mailprüfung konfigurieren
$str = "\"\\?*:/,;|<>"; 	// ungültige Zeichen in der Mail
$lengthm = 8; 		// Mindestlänge der email Adresse

# Hier können Sie die Postleitzahlprüfung konfigurieren
$plz_len = 5;		// Postleitzahllänge (exakte Zeichenzahl)
$plz_min = 00000; 	// Anfang des Postleitzahlenbereiches
$plz_max = 99999; 	// Ende des Postleitzahlenbereiches

# Hier können Sie die Prüfroutine für die Telefonnummer einstellen.
$phone_max = 16;	// maximale länge der Telefonnummer
$phone_min = 3;		//mindestlänge der Telefonnummer
				
# Setzen Sie $textarea = 1 und es wird ein Textfeld eingefügt.
# $textarea = 0 um das Textfeld auszuschalten.
$textarea = 1;

# Konfiguration des Textfeldes
$laengen = 400;						// Maximale Nachrichtenlänge in Zeichen
$textlabel ="message";				// Textlabel
$textheadline = "Ihre Nachricht"; 	// Textüberschrift
$rows = 5;							// Anzahl der Reihen
$cols = 40;							// Breite des Textfeldes

# Tragen Sie hier die Empfängeradresse und die Headerangaben ein.
$empfaenger ='felix@raumboot.de';
$betreff = 'Kontaktformular der Homepage';
$from = 'keineantwortadresse@raumboot.de';

# Sollten fehler Auftreten, tragen Sie hier Ihre Adresse ein.
# z.B. name@ihredomain.de
$add = "";

# Definieren Sie den Browsertitel
$browsertitel = "Kontaktformular";


# Definieren Sie die Hintergrundfarbe
$hintergrund = "#ffffff";

# Definieren Sie die Textfarbe
$textfarbe = "#000000";

# Definieren Sie die Fehlerfarbe
$fehlerfarbe = "#FF0000";

# Definieren Sie die Hintergundfarbe der Eingabefelder
$inputfarbe = "#ffffff";

# Definieren Sie die Ramenfarbe
$rahmenfarbe = "#000000";

# Definieren Sie die Rahmenart Bsp. none, dotted, dashed, solid, double, groove, ridge, inset, outset
$rahmenart = "dashed";

# Definieren Sie die Rahmenstärke
$rahmenpx = "1";

# Definieren Sie die Formulargröße (Breite)
$rahmenbreite = "450";

# Tragen Sie hier die Überschrift ein.
$ueberschrift = "<h1>Email schicken</h1>";

######################################################################################################
#	Ende der Konfiguration 											   							 	 #
######################################################################################################
$check = count($fields);
if ($textarea == 1) {
$check = $check + 1;}
if ($k != $check){
echo 'Der Kontrollwert wurde falsch angegeben. Bitte geben Sie für $k statt '.$k.' den Wert '.$check.' ein';
}

######################################################################################################
#	Bitte ändern Sie hier nichts, es sei denn Sie wissen genau was Sie tun.							 #
############################################# check content ##########################################
$ip = $send_ip == "0" ? $ip="" : getenv('REMOTE_ADDR');

if (($textarea == "1") && isset($_POST['send']))
{
	$i="1"; 
	$messagel = strlen($_POST["send"]["$textlabel"]);
	if (get_magic_quotes_gpc() == "1")
	{ 
	$_POST["send"]["$textlabel"] = stripslashes($_POST["send"]["$textlabel"]);
	#$_POST["send"]["$textlabel"] = htmlspecialchars($_POST["send"]["$textlabel"]);
	}
}	else{$i="0";}

if (isset($messagel) && $messagel > $laengen)
{
	$fmessage = "Ihre Nachricht darf Maximal ".$laengen." Zeichen haben.<br>Ihre Nachricht hat ".$messagel." Zeichen<br>";
	$i--;
}	else{ $fmessage = ""; }

$fempty = array();
if (isset($_POST['send']) && is_array($_POST["send"]))
{
	foreach ($fields as $feld =>$check)
	{
			switch ($check)
			{
				case "0":
					#do nothing / no check
					$i++;
					if (get_magic_quotes_gpc() == "1") 
					{
						$_POST["send"]["$feld"] = stripslashes($_POST["send"]["$feld"]);
					}
						$_POST["send"]["$feld"] = htmlspecialchars($_POST["send"]["$feld"]);
					break;
	
				case "1":
						#not empty
						if(empty($_POST["send"]["$feld"]))
						{
							$fempty["$feld"] = "$feld darf nicht leer sein!<br>";
						}
						else
						{	
							$i++;
							$_POST["send"]["$feld"] = htmlspecialchars($_POST["send"]["$feld"]);
							if (get_magic_quotes_gpc() == "1") 
							{
								$_POST["send"]["$feld"] = stripslashes($_POST["send"]["$feld"]);
							}
						}
					break;
					
				case "2":
						#check mail
						if 		(strlen($_POST['send']["$feld"]) != strcspn($_POST['send']["$feld"],$str)OR 
								(substr_count($_POST['send']["$feld"], "@") < 1) OR
								(substr_count($_POST['send']["$feld"], ".") < 1) OR
								(strlen($_POST['send']["$feld"]) < $lengthm)) 
						{		
							$fmail = "Die E-Mail ist ungültig!<br>";
						} 
						else
						{ 
							$i++;
							$fmail = "";
						} 				
					break;
	
				case "3":
					#check PLZ
					if ( !is_numeric($_POST['send']["$feld"])  || ( strlen(strval($_POST['send']["$feld"])) != $plz_len ))
						{
							$fplz = "Die PLZ ist ungültig!<br>" ;
						}
						elseif ( ( $_POST['send']["$feld"] < $plz_min ) || ( $_POST['send']["$feld"] > $plz_max ) )
						{   $fplz = "Die PLZ liegt nicht im erlaubten Bereich!<br>" ;
						}
						else
						{
							$i++;
							$fplz="";
							if (get_magic_quotes_gpc() == "0")
	{ 
	$_POST["send"]["$textlabel"] = htmlspecialchars($_POST["send"]["$textlabel"]);
	#$_POST["send"]["$textlabel"] = htmlspecialchars($_POST["send"]["$textlabel"]);
	}
							
						}
					break;
					
					case "4":
					#check phonenumber
					if (get_magic_quotes_gpc() == "1") 
					{
						$_POST["send"]["$feld"] = stripslashes($_POST["send"]["$feld"]);
					}
						if ( !is_numeric($_POST['send']["$feld"])  || ( strlen(strval($_POST['send']["$feld"])) > $phone_max ) || ( strlen(strval($_POST['send']["$feld"])) < $phone_min ))
						{
							$fphone = "Die Telefonnummer ist ungültig!<br>" ;
						}
						else
						{
							$i++;
							$fphone="";
						}
					break;
					
				case "5":
					#check website Hier muss geprüft werden ob die seite erreichbar ist
					if (get_magic_quotes_gpc() == "1") 
					{
						$_POST["send"]["$feld"] = stripslashes($_POST["send"]["$feld"]);
					}
					$search = '/^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}$/i';
					$else_search = '/^(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}$/i';
					if (preg_match($search,$_POST['send']["$feld"]) || preg_match($else_search,$_POST['send']["$feld"]))
					{
						$fweb = "";
						$i++;
					}	
					else 
					{
						$fweb = "Die Domain ist ungültig!<br>";
						}
				break;
				case "6":
					#check nur Buchstaben
					if (get_magic_quotes_gpc() == "1") 
					{
						$_POST["send"]["$feld"] = stripslashes($_POST["send"]["$feld"]);
					}
						$search = '/[A-Z]+$/i';
						if (!preg_match($search,$_POST['send']["$feld"]))
						{
							$fempty["$feld"] = "$feld darf nur Buchstaben enthalten!<br>";
						}
						else
						{	
							$fempty["$feld"] = "";
							$i++;
						}
				break;
				case "7":
					#check nur Zahlen
					if (get_magic_quotes_gpc() == "1") 
					{
						$_POST["send"]["$feld"] = stripslashes($_POST["send"]["$feld"]);
					}
						if (!is_numeric($_POST['send']["$feld"]))
						{
							$fempty["$feld"] = "$feld darf nur Zahlen enthalten!<br>";
						}
						else
						{
							$i++;
							$fempty["$feld"]="";
						}
				break;
					
			}
	}
}
#############################################  END of check  #########################################

######################################################################################################
#	Bitte ändern Sie hier nichts, es sei denn Sie wissen genau was Sie tun.							 #
#   Hier wird der Inhalt zusammengefasst und die email formatiert.									 #
######################################################################################################
if (strtoupper(substr(PHP_OS,0,3)=='WIN')) 
{
	$ret="\r\n";
} 
 elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) 
{
	$ret="\r";
}
 else 
{
	$ret="\n";
}

################################## Formatierung des Headers #########################################
foreach ($fields as $field => $value) 
{
	if ($value == 2)
	{
		$reply_val = $field;
	}
}

$reply = isset($_POST['send'][$reply_val]) ? $_POST['send'][$reply_val] : $from; 

$header  = 'From: Kontaktformular<\''.$reply.'\'>'.$ret;												
$header .= 'Reply-To: '.$reply.$ret;
$header .= 'X-Mailer: PHP/ '.phpversion().$ret;
$header .= 'MIME-Version: 1.0'.$ret;
$header .= 'Content-type: text/plain; charset=ISO-8859-1; format=flowed'.$ret;
$header .= 'Content-Transfer-Encoding: 8bit';

#
#####################################################################################################
#						Prüfen ob die Variablen alle übergeben wurden								#
#####################################################################################################

if (isset($_POST['send']) && is_array($_POST["send"]) && $i==$k){
	foreach ($_POST['send'] as $key => $value)
			{
   				$content .= $key.": ".htmlspecialchars($value).$ret;
			}

######################################################################################################
#	Bitte ändern Sie hier nichts, es sei denn Sie wissen genau was Sie tun.							 #
#   Hier wird der Inhalt gesendet																	 #
######################################################################################################
			
		if(empty($add)) 
		{
					$add = "";
					if (@mail($empfaenger, $betreff, "Die IP Adresse des Absenders ist: ".$ip.$ret.$content, $header)) 
					{
						$status = "<h2>Ihre Mail wurde verschickt!</h2>";
						unset($_POST['send']); 
						$i="0";
					} 
						else 
						{
							$status = "<h2>Fehler! Mail konnte nicht gesendet werden</h2>"; 
						}
		} else 
			{	
				if (@mail($empfaenger, $betreff, "Die IP Adresse des Absenders ist: ".$ip.$ret.$content, $header, "-f $add")) 
				{
					$status = "<h2>Ihre Mail wurde verschickt!</h2>";
					unset($_POST['send']); 
					$i="0";
				}
					else
					{
						$status = "<h2>Fehler! Mail konnte nicht gesendet werden</h2>";
					}
			}
}
	
if ($f5 == "0" && stristr($status, "<h2>Ihre Mail wurde verschickt!</h2>")){
	header("Location: index.php?status=Ihre Mail wurde verschickt!");
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title><?php echo $browsertitel; ?></title>
<meta name="author" content="Stefan Schwiedel www.git-development.com">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<!--Anfang der Stylesheets!-->
<style type="text/css"><!--

body {
	 font-family:Verdana,sans-serif;
	 font-size:12px;
	 color: <?php echo $textfarbe; ?>;
	 background-color:<?php echo $hintergrund; ?>;
	 text-align:center;
	}

a:link, a:visited, a:active a:hover {
	text-decoration:none;
	font-weight:bold;
	color:#000000;
	font-size:10px;
}

h1 {
	font-size:15px;
	margin-top:30px;
}

h2 {
	font-size:12px;
}

.formular {
	margin:0px auto;
	width:<?php echo $rahmenbreite."px"; ?>;
	border:<?php echo $rahmenpx."px ".$rahmenart." ".$rahmenfarbe; ?>;
	text-align:left;
}

.fehler {
	color:<?php echo $fehlerfarbe; ?>;
	text-align:left;
}
.rahmen {
	margin-top:10px;
}

.abstand {
 margin-left:105px;
}

.label {
	float:left;
	text-align:left;
	width:9.5em;
	line-height:25px;
}

input{
	margin-top:5px;
	background-color:<?php echo $inputfarbe;?>;
}

.nachricht {
	clear:both;
	text-align:center;
}

.copyright {
	font-size:10px;
	color:#000000;
	position:relative;top:5px;
 }
//--></style>

<!--Ende der Stylesheets!-->

</head>
<body>


<?php
###################################################################################################
#   Hier beginnt die Ausgabe des Formulars															 #
######################################################################################################

echo "$ueberschrift".
"<form class=\"formular\" action=\"$PHP_SELF\" method=\"post\" target=\"_self\" accept-charset=\"ISO-8859-1\">\n".
"<div class=\"rahmen\">\n";

foreach ( $fields as $field => $check) 
{
		printf ('<div class="abstand">
					<div class="label">
						<label for="%s"> %s </label>
					</div>
					<div><input name="send[%s]" type="text" id="%s" size="%s" value="%s"></div>
				</div>', $field, $field, $field, $field, $inputsize, addslashes(htmlspecialchars($_POST['send']["$field"])));
}

if ($textarea == 1)
{
		printf ('
		<div class="nachricht"> <br>
				  <label for="%s">%s</label>
				  <br>
				  <textarea name="send[%s]" id="%s" rows="%s" cols="%s">%s</textarea>
		' ,$textlabel ,$textheadline ,$textlabel ,$textlabel,$rows ,$cols ,$_POST['send']["$textlabel"]);
		echo '</div>';
}

echo '<div align="center"><input type=submit value=absenden></div><br>';
echo '
<div class="abstand">
<div class="fehler">';

if (isset($_POST['send'])&& is_array($_POST['send']))
 {
	  echo $fplz; echo $fmail; echo $fmessage; echo $fphone; echo $fweb;
   	  foreach($fempty as $fehler)
      {
		echo $fehler;
	  }
 }
 
echo "<br></div></div>";
echo '</div></form>';
echo '<div class="copyright" align=center>Powered by <a href="http://www.git-development.com" title="Global IT Development - Webdesign for business.">git-development.com</a></div>';

if (isset($_GET['status']) && !isset($_POST['send']) && $f5=="0")
   {
		echo '<br><h2 align="center">'.$_GET['status'].'</h2>';	
   }else 
    {
	 	echo '<br><h2 align="center">'.$status.'</h2>';
    }

# Formular ende ######################################################################################
?>

</body>
</html>