Kontaktformular Anhang wird nicht mit übertragen

Antoniodc

Mitglied
Hi zusammen,

jetzt habe ich mein Kontaktformular soweit wie möglich fertig. Habe aber noch einen kleinen Fehler drin. Leider nimmt er den Anhang nicht mit. Könnte da einer mal drüber schauen, ob mir helfen? Ich verzweifel schon. Auch ist der Betreff plötzlich nicht mehr vorhanden.Wenn ich Kopie ankreuze, dann sendet er trotzdem, auch wenn ich ein falsches ergebnis angebe. Je mehr ich mache, desto mehr zerstöre ich.

Ich würde mich über Hilfe freuen. Danke vorab.
 

Anhänge

  • Kontaktformular_GTM.rar
    4,1 KB · Aufrufe: 11
Zuletzt bearbeitet:
Ähm ich würde an deiner stelle den code so veröffentlichen. Mit Paketen von unbekannten downloaden und dann lokal öffnen habe ich so meine Probleme.

Zu deinem problem. Hast du enctype="multipart/form-data" in deine Form eingebunden?
 
Ähm ich würde an deiner stelle den code so veröffentlichen. Mit Paketen von unbekannten downloaden und dann lokal öffnen habe ich so meine Probleme.

Zu deinem problem. Hast du enctype="multipart/form-data" in deine Form eingebunden?

Kein Problem. Ist nur etwas lang, deshalb hatte ich es so reingesetzt. Habe nicht enctype="multipart/form-data" drin.
Code:
<?php
session_start();
//Vor session_start(); darf N I C H T S stehen 

// Adresse, an die die Formulardaten gesendet werden sollen:
$mailto = "antoniodacosta@gmx.de";

// Hier eine Emailadresse eingeben, die der Anfragende als Absende-Emailadresse sehen soll:
$absender = "antoniodacosta@gmx.de";
$absendername = "GTM-Dienstleistungen UG";

//# Maximale Größe des Attachments in Bytes:
$max_attach_size = 1000000;

if($_REQUEST['Send']){	// Formular abgesendet
	
	// Session-Variablen mit Formular-Werten erstellen
	$_SESSION["Telefon"]=$_REQUEST["Telefon"];
    $_SESSION["Name"]=$_REQUEST["Name"];
	$_SESSION["Firma"]=$_REQUEST["Firma"];
	$_SESSION["Strasse"]=$_REQUEST["Strasse"];
	$_SESSION["Ort"]=$_REQUEST["Ort"];
	$_SESSION["Nachricht"]=$_REQUEST["Nachricht"];
	$_SESSION["Email"]=$_REQUEST["Email"];
	$_SESSION["Kontakt"]=$_REQUEST["Kontakt"];
    $_SESSION["Anrede"] = $_REQUEST["Anrede"]; 
	// Allgemeine Variablen
	$email      =  $_REQUEST["Email"];
	$Anrede     =  $_REQUEST["Anrede"];
	$firma 		= $_REQUEST['Firma'];
	$name       =  $_REQUEST["Name"];
	$nachricht   =  $_REQUEST["Nachricht"];
	$strasse     =  $_REQUEST["Strasse"];
	$Ort         = $_REQUEST["Ort"];
	$festnetz     = $_REQUEST["Telefon"];
	$kontakt     =implode(', ', $_REQUEST['Kontakt']); 
	
// Überprüfungen der Daten:
	if (empty($_REQUEST['Name']) or empty($_REQUEST['Email']) or empty($_REQUEST['Telefon'])) {	// leere Felder prüfen
		echo "<strong>Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!</strong>";
	} else if (!isValidEmail($_REQUEST['Email'])) {	// ungültige Mailadresse
		echo "<strong>Ihre Email-Adresse ist ungültig.<br> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und tragen eine gültige Email-Adresse ein.</strong>";
	} else if (!preg_match('[^[0-9\+\/\(\) \-]{5,30}$]',$_REQUEST['Telefon'])) {	// Telefonnummer nicht im Format 999-999-9999 oder 1-999-999-9999
		echo "<strong> Ihre Telefonnummer hat kein gültiges Format.<br> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und tragen eine gültige Telefonnummer ein.</strong>";
	} else if ((intval($_REQUEST["Code"]) != intval($_SESSION["ergebnis"])) or ($_SESSION["ergebnis"] == 0)) {	// Ergebnis der Rechenaufgabe falsch
		echo "<strong>Die Rechenaufgabe ist nicht Richtig gelöst.<br> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und tragen sie bitte eine die korrekte Lösug ein.</strong>";
	} else if( // Checkbox überprüfen
      empty($_REQUEST['Kontakt'])){ 
        echo "<strong> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und geben uns den Kontaktgrund an, <br>damit Ihre Anfrage an die richtige Abteilung weitergeleitet werden kann!</strong>";		
	}
	

	$subject = stripslashes($subject);
	if ($subject != "") $mail_subject = $subject; else $mail_subject = $kontakt;
	$ip = $_SERVER["REMOTE_ADDR"];
		// Wenn Attachment, dann MIME-Mail erstellen:
if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "")
{
// Datei einlesen und codieren:
$datei_content = fread(fopen($_FILES['probe']['tmp_name'],"r"),filesize($_FILES['probe']['tmp_name']));
$datei_content = chunk_split(base64_encode($datei_content),76,"\n");

// Boundary festlegen:
$boundary = md5(uniqid(rand()));

// Mail-Header:
$mail_header = "From: ".$name." <".$email.">\n";
$mail_header .= "X-Sender-IP: ".$ip."\n";
$mail_header .= "MIME-Version: 1.0\n";
$mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
$mail_header .= "This is a multi-part message in MIME format.\n";
// Mail-Text:
$mail_header .= "--".$boundary;
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\nFolgenden Daten wurden übermittelt:\n\n";
$mail_header .= "\n\nAnrede: " .$Anrede;
$mail_header .= "\n\nName: " .$name;
$mail_header .= "\n\nFirma: " .$firma;
$mail_header .= "\n\nStraße: " .$strasse;
$mail_header .= "\n\nPLZ / Ort: " .$ort;
$mail_header .= "\n\nTelefon: " .$festnetz;
$mail_header .= "\n\nE-Mail: " .$email;
$mail_header .= "\n\nKontakt bezüglich: " .$kontakt;
$mail_header .= "\n\nIhre Nachricht: ".$nachricht;
// Attachment:
$mail_header .= "\n--".$boundary;
$mail_header .= "\nContent-Type: ".$_FILES['probe']['type']."; name=\"".$_FILES['probe']['name']."\"";
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename=\"".$_FILES['probe']['name']."\"";
$mail_header .= "\n\n".$datei_content;

// Ende:
$mail_header .= "\n--".$boundary."--";
// Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
if (@mail($mailto,$mail_subject,"",$mail_header)) $sent = true; else $errors[] = "keine Verbindung zum Mailserver - bitte nochmal versuchen";
}
// kein Attachment, normale E-Mail:
else
{
// Mail-Header:
$mail_header = "From: ".$name." <".$email.">\n";
$mail_header .= "X-Sender-IP: ".$ip."\n";
$mail_header .= "MIME-Version: 1.0\n";
$mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
$mail_header .= "This is a multi-part message in MIME format.\n";
// Mail-Text:
$mail_header .= "--".$boundary;
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\nFolgenden Daten wurden übermittelt:\n\n";
$mail_header .= "\n\nAnrede: " .$Anrede;
$mail_header .= "\n\nName: " .$name;
$mail_header .= "\n\nFirma: " .$firma;
$mail_header .= "\n\nStraße: " .$strasse;
$mail_header .= "\n\nPLZ / Ort: " .$ort;
$mail_header .= "\n\nTelefon: " .$festnetz;
$mail_header .= "\n\nE-Mail: " .$email;
$mail_header .= "\n\nKontakt bezüglich: " .$kontakt;
$mail_header .= "\n\nIhre Nachricht: ".$nachricht;
// Kein Attachment
if (@mail($mailto,$text,$mail_subject,$mail_header)) $sent = true; else $errors[] = "keine Verbindung zum Mailserver - bitte nochmal versuchen";
}

// Kopie an Absender:
if (isset($sent) && isset($email) && $email != "" && isset($_REQUEST['copy']))
{
if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "") $copy_mail_text ="Bitte überprüfen sie die übermittelten Daten auf Ihre Richtigkeit.\n\nSollte etwas nicht stimmen, Antworten sie bitte mit dem Inhalt dieser eMail.\n\nIhre Email wird in der Regel innerhalb der nächsten 24 Stunden beantwortet.\n\nIhr GTM Team\n\n".$text."\n\nAttachment: ".$_FILES['probe']['name'];else $copy_mail_text ="Bitte überprüfen sie die übermittelten Daten auf Ihre Richtigkeit.\n\nSollte etwas nicht stimmen, Antworten sie bitte mit dem Inhalt dieser eMail.\n\nIhre Email wird in der Regel innerhalb der nächsten 24 Stunden beantwortet.\n\nIhr GTM Team\n\n".$text;
// Mail-Header:
$header = "From: ".$absendername." <".$absender.">\n";
$header .= "X-Sender-IP: ".$ip."\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
$header .= "This is a multi-part message in MIME format.\n";
// Mail-Text:
$header .= "--".$boundary;
$header .= "\n\nFolgende Email haben wir von Ihnen erhalten:";
$header .= "\n\nAnrede: " .$Anrede;
$header .= "\n\nName: " .$name;
$header .= "\n\nFirma: " .$firma;
$header .= "\n\nStraße: " .$strasse;
$header .= "\n\nPLZ / Ort: " .$ort;
$header .= "\n\nTelefon: " .$festnetz;
$header .= "\n\nE-Mail: " .$email;
$header .= "\n\nKontakt bezüglich: " .$kontakt;
$header .= "\n\nIhre Nachricht: ".$nachricht;
// Kein Attachment
@mail($email,$mail_subject,$copy_mail_text, $header);
       echo "<strong>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</strong><br><img src=\"image/Logo_GTM.png\" alt=\"Logo\">";
}
}
	else {	// Formular darstellen

	// Rechenaufgabe erstellen und Ergebnis in $_SESSION["ergebnis" speichern
	$zhl1 = rand(0,10);
	$zhl2 = rand(0,10);
	$aufgabe = rand(0,2);
    
	if($aufgabe == 0) {
		$text = $zhl1." + ".$zhl2;
		$erg = $zhl1 + $zhl2;
	}
	if($aufgabe == 1) {
		if ($zhl1 < $zhl2) {	// Ergebnis wird negativ: Zahlen tauschen
			list($zhl1, $zhl2) = array($zhl2, $zhl1);
		} else if ($zhl1 == $zhl2) {	// Zahl 1 und Zahl 2 identisch, Zahl 1 etwas erhöhen, damit Ergebnis nicht 0 ist
			$zhl1+=rand(1,5);
		}
		$text = $zhl1." - ".$zhl2;
		$erg = $zhl1 - $zhl2;
	}
	if($aufgabe == 2) {
		$text = $zhl1." x ".$zhl2;
		$erg = $zhl1 * $zhl2;
	}
	$_SESSION['ergebnis'] = $erg;

	
	// HTML-Formular darstellen
?>
<script type="text/javascript">
function formLeeren(oForm){
 
    var frm_elements = oForm.elements; 
    for (i = 0; i < frm_elements.length; i++)
    {
        field_type = frm_elements[i].type.toLowerCase();
        switch (field_type)
        {
        case "text":
            frm_elements[i].value = "";
        case "textarea":
            frm_elements[i].value = "";			
        case "checkbox":
            if (frm_elements[i].checked)
            {
                frm_elements[i].checked = false;
            }
			case "radio":
            if (frm_elements[i].checked)
            {
                frm_elements[i].checked = false;
            }
            break;
        default:
            break;
        }
    }
}
</script>

    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
	<table border="0" cellpadding="1" cellspacing="2">
	<h1>Kontaktformular</h1>
	<p><small>Bitte füllen Sie alle mit * markierten Felder aus. (Pflichtfelder)</small></p>
    <tr>
	<td align="left" valign="top">Anrede:</td>
	<td>
	<input type="radio" name="Anrede" value="Herr" <?php if (isset($_SESSION["Anrede"]) and $_SESSION["Anrede"] == "Herr") echo 'checked="checked"';?>> Herr
	<input type="radio" name="Anrede" value="Frau" <?php if (isset($_SESSION["Anrede"]) and $_SESSION["Anrede"] == "Frau") echo 'checked="checked"';?>> Frau
	</td>
	</tr>
	<tr>
	<td>Ihr Name*:</td>
	<td><input name="Name" size="40" type="text" value="<?=$_SESSION["Name"]?>"></td>
	</tr>
	<tr><td><small>Vor- und Nachname</small></td></tr>
	<tr>
	<td>Firma:</td>
	<td><input name="Firma" size="40" type="text" value="<?=$_SESSION["Firma"]?>"></td>
	</tr>
	<tr>
	<td>Strasse:</td>
	<td><input name="Strasse" size="40" type="text" value="<?=$_SESSION["Strasse"]?>"></td>
	</tr>
	<tr>
	<td>PLZ / Ort:</td>
	<td><input name="Ort" size="40" type="text" value="<?=$_SESSION["Ort"]?>"></td>
	</tr>
	<tr>
	<td>Telefon*:</td><br>
	<td><input name="Telefon" size="40" type="text" value="<?=$_SESSION["Telefon"]?>"></td>
	</tr>
	<tr>
	<td>Ihre eMail-Adresse*:</td>
	<td><input name="Email" id="email" size="40" type="text" value="<?=$_SESSION["Email"]?>"></td>
	</tr>
	<tr><td align="left" valign="top">Ihre Kontaktanfrage*:<br> <small>Mehrfachauswahl möglich</small></td>
	<td>
	<input type="checkbox" class="Check" name="Kontakt[]" value="Sommerreifen" <?php echoCheckedFromArray($_SESSION['Kontakt'], 'Sommerreifen'); ?>>Sommerreifen<br>
	<input type="checkbox" class="Check" name="Kontakt[]" value="Winterreifen" <?php echoCheckedFromArray($_SESSION['Kontakt'], 'Winterreifen'); ?>> Winterreifen<br>
	<input type="checkbox" class="Check" name="Kontakt[]" value="Allwetterreifen" <?php echoCheckedFromArray($_SESSION['Kontakt'], 'Allwetterreifen'); ?>> Allwetterreifen<br>
	<input type="checkbox" class="Check" name="Kontakt[]" value="Alufelgen" <?php echoCheckedFromArray($_SESSION['Kontakt'], 'Alufelgen'); ?>> Alufelgen<br>
	<input type="checkbox" class="Check" name="Kontakt[]" value="Stahlfelgen" <?php echoCheckedFromArray($_SESSION['Kontakt'], 'Stahlfelgen'); ?>> Stahlfelgen<br>
	<input type="checkbox" class="Check" name="Kontakt[]" value="Komplettrad" <?php echoCheckedFromArray($_SESSION['Kontakt'], 'Komplettrad'); ?>> Komplettrad<br>
	<input type="checkbox" class="Check" name="Kontakt[]" value="sonstiges" <?php echoCheckedFromArray($_SESSION['Kontakt'], 'sonstiges'); ?>> sonstiges
	</td>
	<tr>
	<td>Ihre Nachricht:</td>
	<td><textarea cols="30" name="Nachricht" rows="5"><?=$_SESSION["Nachricht"]?></textarea></td>
	</tr>
	<tr>
	<td>Datei-Anhang:</td>
	<td colspan="3"><input type="file" name="probe" value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>" size="17"/></td>
	</tr>
	<td colspan="3"><input type="checkbox" name="copy" value="true" style="width: 10px;" />
	Kopie an Absender</td>
	</tr>
	<tr>
	<td><strong> Die Rechenaufgabe dient zum Schutz gegen Spamnachrichten! </strong></td></tr>
	<tr>
	<td>Bitte lösen Sie folgende Rechenaufgabe: *</td>
	<td align="right" colspan="2"><?php echo $text; ?>&nbsp;=<input type='text' size="20" name='Code'></td>
	</tr>
	<tr>
	<td align="right" colspan="2"><input name="Send" type="submit" value="Formular absenden"> <input type="button" value="Formular l&ouml;schen" onClick="formLeeren(this.form);"></td>
	</tr>
	</tr>
	</table>
	</form>
	<a><small>Copyright © 2013 <a href="#">GTM-Dienstleistungen UG </small></a> 
	<?php
}
###############################################################################
# FUNKTIONEN
###############################################################################

/**
 * isValidEmail
 * Prüft ob eine Emailadresse gültig ist mittels filter_var() und getmxrr()
 * @param String    $email
 * @return boolean
 */
function isValidEmail($email){
    //PHP-Filter anwenden
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if($email === false) return false;
    //Und noch die Domain testen
    list($name,$domain) = explode('@',$email);
    return (getmxrr ($domain,$mxhosts));
}
    /**
     * Scheibt checked wenn der Wert im Array ist
     * @param array<Variant>    Array aller mögleichen Werte
     * @param variant           gesuchter Wert
     */
function echoCheckedFromArray($array, $value){
     //Prüfen ob a) Der Array exisitert und b) obs ein Array ist
    if(isset($array) && is_array($array)){
        //Prüfen ob der Wert im Array vorhanden ist
        if(in_array($value, $array)){
            echo 'checked="checked"';
           }
        }
    }
?>

Ähm ich würde an deiner stelle den code so veröffentlichen. Mit Paketen von unbekannten downloaden und dann lokal öffnen habe ich so meine Probleme.

Zu deinem problem. Hast du enctype="multipart/form-data" in deine Form eingebunden?

Super geklappt, jetzt erscheint nur nicht mehr der Text:" Vielen Dank für Ihre eMail...." und er sendet trotz fehler in der Rechenaufgabe :(
 
Du musst das Senden der Email in einen else-Fall packen. Du hast ja die Prüfungen drin, ob Name usw eingegeben wurden und ob die Aufgabe richtig ausgerechnet wurde. Aber die Email wird in jedem Fall gesendet, da der Code-Teil nicht als Ausnahme der Fehler-Prüfungen notiert ist. Packe um das das Senden der Mail einen else-Block, dann dürfte das richtig laufen.

EDIT: PS: Arbeite mal mit einrücken des Codes in den Code-Blöcken. Das kann man kaum lesen.
 
Du musst das Senden der Email in einen else-Fall packen. Du hast ja die Prüfungen drin, ob Name usw eingegeben wurden und ob die Aufgabe richtig ausgerechnet wurde. Aber die Email wird in jedem Fall gesendet, da der Code-Teil nicht als Ausnahme der Fehler-Prüfungen notiert ist. Packe um das das Senden der Mail einen else-Block, dann dürfte das richtig laufen.

EDIT: PS: Arbeite mal mit einrücken des Codes in den Code-Blöcken. Das kann man kaum lesen.

Ich werde es bei nächsten mal beachten.
Könntest du mir sagen, wo ich es genau hinsetzen soll? Bekomme das irgendwie nicht hin...
 
Evtl so:

PHP:
<?php
session_start();
//Vor session_start(); darf N I C H T S stehen

// Adresse, an die die Formulardaten gesendet werden sollen:
$mailto = "antoniodacosta@gmx.de";

// Hier eine Emailadresse eingeben, die der Anfragende als Absende-Emailadresse sehen soll:
$absender = "antoniodacosta@gmx.de";
$absendername = "GTM-Dienstleistungen UG";

//# Maximale Größe des Attachments in Bytes:
$max_attach_size = 1000000;

if($_REQUEST['Send']){  // Formular abgesendet

	// Session-Variablen mit Formular-Werten erstellen
	$_SESSION["Telefon"]=$_REQUEST["Telefon"];
	$_SESSION["Name"]=$_REQUEST["Name"];
	$_SESSION["Firma"]=$_REQUEST["Firma"];
	$_SESSION["Strasse"]=$_REQUEST["Strasse"];
	$_SESSION["Ort"]=$_REQUEST["Ort"];
	$_SESSION["Nachricht"]=$_REQUEST["Nachricht"];
	$_SESSION["Email"]=$_REQUEST["Email"];
	$_SESSION["Kontakt"]=$_REQUEST["Kontakt"];
	$_SESSION["Anrede"] = $_REQUEST["Anrede"];
	// Allgemeine Variablen
	$email      =  $_REQUEST["Email"];
	$Anrede     =  $_REQUEST["Anrede"];
	$firma      = $_REQUEST['Firma'];
	$name       =  $_REQUEST["Name"];
	$nachricht   =  $_REQUEST["Nachricht"];
	$strasse     =  $_REQUEST["Strasse"];
	$Ort         = $_REQUEST["Ort"];
	$festnetz     = $_REQUEST["Telefon"];
	$kontakt     =implode(', ', $_REQUEST['Kontakt']);

	// Überprüfungen der Daten:
	if (empty($_REQUEST['Name']) or empty($_REQUEST['Email']) or empty($_REQUEST['Telefon'])) { // leere Felder prüfen
		echo "<strong>Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!</strong>";
	} else if (!isValidEmail($_REQUEST['Email'])) { // ungültige Mailadresse
		echo "<strong>Ihre Email-Adresse ist ungültig.<br> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und tragen eine gültige Email-Adresse ein.</strong>";
	} else if (!preg_match('[^[0-9\+\/\(\) \-]{5,30}$]',$_REQUEST['Telefon'])) {    // Telefonnummer nicht im Format 999-999-9999 oder 1-999-999-9999
		echo "<strong> Ihre Telefonnummer hat kein gültiges Format.<br> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und tragen eine gültige Telefonnummer ein.</strong>";
	} else if ((intval($_REQUEST["Code"]) != intval($_SESSION["ergebnis"])) or ($_SESSION["ergebnis"] == 0)) {  // Ergebnis der Rechenaufgabe falsch
		echo "<strong>Die Rechenaufgabe ist nicht Richtig gelöst.<br> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und tragen sie bitte eine die korrekte Lösug ein.</strong>";
	} else if( // Checkbox überprüfen
			empty($_REQUEST['Kontakt'])){
		echo "<strong> Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und geben uns den Kontaktgrund an, <br>damit Ihre Anfrage an die richtige Abteilung weitergeleitet werden kann!</strong>";
	}
	else
	{ 
	
		$subject = stripslashes($subject);
		if ($subject != "") $mail_subject = $subject; else $mail_subject = $kontakt;
		$ip = $_SERVER["REMOTE_ADDR"];
		// Wenn Attachment, dann MIME-Mail erstellen:
		if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "")
		{
			// Datei einlesen und codieren:
			$datei_content = fread(fopen($_FILES['probe']['tmp_name'],"r"),filesize($_FILES['probe']['tmp_name']));
			$datei_content = chunk_split(base64_encode($datei_content),76,"\n");
	
			// Boundary festlegen:
			$boundary = md5(uniqid(rand()));
	
			// Mail-Header:
			$mail_header = "From: ".$name." <".$email.">\n";
			$mail_header .= "X-Sender-IP: ".$ip."\n";
			$mail_header .= "MIME-Version: 1.0\n";
			$mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
			$mail_header .= "This is a multi-part message in MIME format.\n";
			// Mail-Text:
			$mail_header .= "--".$boundary;
			$mail_header .= "\nContent-Type: text/plain";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nFolgenden Daten wurden übermittelt:\n\n";
			$mail_header .= "\n\nAnrede: " .$Anrede;
			$mail_header .= "\n\nName: " .$name;
			$mail_header .= "\n\nFirma: " .$firma;
			$mail_header .= "\n\nStraße: " .$strasse;
			$mail_header .= "\n\nPLZ / Ort: " .$ort;
			$mail_header .= "\n\nTelefon: " .$festnetz;
			$mail_header .= "\n\nE-Mail: " .$email;
			$mail_header .= "\n\nKontakt bezüglich: " .$kontakt;
			$mail_header .= "\n\nIhre Nachricht: ".$nachricht;
			// Attachment:
			$mail_header .= "\n--".$boundary;
			$mail_header .= "\nContent-Type: ".$_FILES['probe']['type']."; name=\"".$_FILES['probe']['name']."\"";
			$mail_header .= "\nContent-Transfer-Encoding: base64";
			$mail_header .= "\nContent-Disposition: attachment; filename=\"".$_FILES['probe']['name']."\"";
			$mail_header .= "\n\n".$datei_content;
	
			// Ende:
			$mail_header .= "\n--".$boundary."--";
			// Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
			if (@mail($mailto,$mail_subject,"",$mail_header)) $sent = true; else $errors[] = "keine Verbindung zum Mailserver - bitte nochmal versuchen";
		}
		// kein Attachment, normale E-Mail:
		else
		{
			// Mail-Header:
			$mail_header = "From: ".$name." <".$email.">\n";
			$mail_header .= "X-Sender-IP: ".$ip."\n";
			$mail_header .= "MIME-Version: 1.0\n";
			$mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
			$mail_header .= "This is a multi-part message in MIME format.\n";
			// Mail-Text:
			$mail_header .= "--".$boundary;
			$mail_header .= "\nContent-Type: text/plain";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nFolgenden Daten wurden übermittelt:\n\n";
			$mail_header .= "\n\nAnrede: " .$Anrede;
			$mail_header .= "\n\nName: " .$name;
			$mail_header .= "\n\nFirma: " .$firma;
			$mail_header .= "\n\nStraße: " .$strasse;
			$mail_header .= "\n\nPLZ / Ort: " .$ort;
			$mail_header .= "\n\nTelefon: " .$festnetz;
			$mail_header .= "\n\nE-Mail: " .$email;
			$mail_header .= "\n\nKontakt bezüglich: " .$kontakt;
			$mail_header .= "\n\nIhre Nachricht: ".$nachricht;
			// Kein Attachment
			if (@mail($mailto,$text,$mail_subject,$mail_header)) $sent = true; else $errors[] = "keine Verbindung zum Mailserver - bitte nochmal versuchen";
		}
	
		// Kopie an Absender:
		if (isset($sent) && isset($email) && $email != "" && isset($_REQUEST['copy']))
		{
			if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "") $copy_mail_text ="Bitte überprüfen sie die übermittelten Daten auf Ihre Richtigkeit.\n\nSollte etwas nicht stimmen, Antworten sie bitte mit dem Inhalt dieser eMail.\n\nIhre Email wird in der Regel innerhalb der nächsten 24 Stunden beantwortet.\n\nIhr GTM Team\n\n".$text."\n\nAttachment: ".$_FILES['probe']['name'];else $copy_mail_text ="Bitte überprüfen sie die übermittelten Daten auf Ihre Richtigkeit.\n\nSollte etwas nicht stimmen, Antworten sie bitte mit dem Inhalt dieser eMail.\n\nIhre Email wird in der Regel innerhalb der nächsten 24 Stunden beantwortet.\n\nIhr GTM Team\n\n".$text;
			// Mail-Header:
			$header = "From: ".$absendername." <".$absender.">\n";
			$header .= "X-Sender-IP: ".$ip."\n";
			$header .= "MIME-Version: 1.0\n";
			$header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
			$header .= "This is a multi-part message in MIME format.\n";
			// Mail-Text:
			$header .= "--".$boundary;
			$header .= "\n\nFolgende Email haben wir von Ihnen erhalten:";
			$header .= "\n\nAnrede: " .$Anrede;
			$header .= "\n\nName: " .$name;
			$header .= "\n\nFirma: " .$firma;
			$header .= "\n\nStraße: " .$strasse;
			$header .= "\n\nPLZ / Ort: " .$ort;
			$header .= "\n\nTelefon: " .$festnetz;
			$header .= "\n\nE-Mail: " .$email;
			$header .= "\n\nKontakt bezüglich: " .$kontakt;
			$header .= "\n\nIhre Nachricht: ".$nachricht;
			// Kein Attachment
			@mail($email,$mail_subject,$copy_mail_text, $header);
			echo "<strong>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</strong><br><img src=\"image/Logo_GTM.png\" alt=\"Logo\">";
		}
	}
}
else {  // Formular darstellen

	// Rechenaufgabe erstellen und Ergebnis in $_SESSION["ergebnis" speichern
	$zhl1 = rand(0,10);
	$zhl2 = rand(0,10);
	$aufgabe = rand(0,2);

	if($aufgabe == 0) {
		$text = $zhl1." + ".$zhl2;
		$erg = $zhl1 + $zhl2;
	}
	if($aufgabe == 1) {
		if ($zhl1 < $zhl2) {    // Ergebnis wird negativ: Zahlen tauschen
			list($zhl1, $zhl2) = array($zhl2, $zhl1);
		} else if ($zhl1 == $zhl2) {    // Zahl 1 und Zahl 2 identisch, Zahl 1 etwas erhöhen, damit Ergebnis nicht 0 ist
			$zhl1+=rand(1,5);
		}
		$text = $zhl1." - ".$zhl2;
		$erg = $zhl1 - $zhl2;
	}
	if($aufgabe == 2) {
		$text = $zhl1." x ".$zhl2;
		$erg = $zhl1 * $zhl2;
	}
	$_SESSION['ergebnis'] = $erg;


	// HTML-Formular darstellen
	?>
<script type="text/javascript">
function formLeeren(oForm){
 
    var frm_elements = oForm.elements; 
    for (i = 0; i < frm_elements.length; i++)
    {
        field_type = frm_elements[i].type.toLowerCase();
        switch (field_type)
        {
        case "text":
            frm_elements[i].value = "";
        case "textarea":
            frm_elements[i].value = "";         
        case "checkbox":
            if (frm_elements[i].checked)
            {
                frm_elements[i].checked = false;
            }
            case "radio":
            if (frm_elements[i].checked)
            {
                frm_elements[i].checked = false;
            }
            break;
        default:
            break;
        }
    }
}
</script>

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
	<table border="0" cellpadding="1" cellspacing="2">
		<h1>Kontaktformular</h1>
		<p>
			<small>Bitte füllen Sie alle mit * markierten Felder aus.
				(Pflichtfelder)</small>
		</p>
		<tr>
			<td align="left" valign="top">Anrede:</td>
			<td><input type="radio" name="Anrede" value="Herr"
			<?php if (isset($_SESSION["Anrede"]) and $_SESSION["Anrede"] == "Herr") echo 'checked="checked"';?>>
				Herr <input type="radio" name="Anrede" value="Frau"
				<?php if (isset($_SESSION["Anrede"]) and $_SESSION["Anrede"] == "Frau") echo 'checked="checked"';?>>
				Frau</td>
		</tr>
		<tr>
			<td>Ihr Name*:</td>
			<td><input name="Name" size="40" type="text"
				value="<?=$_SESSION["Name"]?>"></td>
		</tr>
		<tr>
			<td><small>Vor- und Nachname</small></td>
		</tr>
		<tr>
			<td>Firma:</td>
			<td><input name="Firma" size="40" type="text"
				value="<?=$_SESSION["Firma"]?>"></td>
		</tr>
		<tr>
			<td>Strasse:</td>
			<td><input name="Strasse" size="40" type="text"
				value="<?=$_SESSION["Strasse"]?>"></td>
		</tr>
		<tr>
			<td>PLZ / Ort:</td>
			<td><input name="Ort" size="40" type="text"
				value="<?=$_SESSION["Ort"]?>"></td>
		</tr>
		<tr>
			<td>Telefon*:</td>
			<br>
			<td><input name="Telefon" size="40" type="text"
				value="<?=$_SESSION["Telefon"]?>"></td>
		</tr>
		<tr>
			<td>Ihre eMail-Adresse*:</td>
			<td><input name="Email" id="email" size="40" type="text"
				value="<?=$_SESSION["Email"]?>"></td>
		</tr>
		<tr>
			<td align="left" valign="top">Ihre Kontaktanfrage*:<br> <small>Mehrfachauswahl
					möglich</small>
			</td>
			<td><input type="checkbox" class="Check" name="Kontakt[]"
				value="Sommerreifen"
				<?php echoCheckedFromArray($_SESSION['Kontakt'], 'Sommerreifen'); ?>>Sommerreifen<br>
				<input type="checkbox" class="Check" name="Kontakt[]"
				value="Winterreifen"
				<?php echoCheckedFromArray($_SESSION['Kontakt'], 'Winterreifen'); ?>>
				Winterreifen<br> <input type="checkbox" class="Check"
				name="Kontakt[]" value="Allwetterreifen"
				<?php echoCheckedFromArray($_SESSION['Kontakt'], 'Allwetterreifen'); ?>>
				Allwetterreifen<br> <input type="checkbox" class="Check"
				name="Kontakt[]" value="Alufelgen"
				<?php echoCheckedFromArray($_SESSION['Kontakt'], 'Alufelgen'); ?>>
				Alufelgen<br> <input type="checkbox" class="Check" name="Kontakt[]"
				value="Stahlfelgen"
				<?php echoCheckedFromArray($_SESSION['Kontakt'], 'Stahlfelgen'); ?>>
				Stahlfelgen<br> <input type="checkbox" class="Check"
				name="Kontakt[]" value="Komplettrad"
				<?php echoCheckedFromArray($_SESSION['Kontakt'], 'Komplettrad'); ?>>
				Komplettrad<br> <input type="checkbox" class="Check"
				name="Kontakt[]" value="sonstiges"
				<?php echoCheckedFromArray($_SESSION['Kontakt'], 'sonstiges'); ?>>
				sonstiges</td>
		
		
		<tr>
			<td>Ihre Nachricht:</td>
			<td><textarea cols="30" name="Nachricht" rows="5">
					<?=$_SESSION["Nachricht"]?>
				</textarea></td>
		</tr>
		<tr>
			<td>Datei-Anhang:</td>
			<td colspan="3"><input type="file" name="probe"
				value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>"
				size="17" /></td>
		</tr>
		<td colspan="3"><input type="checkbox" name="copy" value="true"
			style="width: 10px;" /> Kopie an Absender</td>
		</tr>
		<tr>
			<td><strong> Die Rechenaufgabe dient zum Schutz gegen
					Spamnachrichten! </strong></td>
		</tr>
		<tr>
			<td>Bitte lösen Sie folgende Rechenaufgabe: *</td>
			<td align="right" colspan="2"><?php echo $text; ?>&nbsp;=<input
				type='text' size="20" name='Code'></td>
		</tr>
		<tr>
			<td align="right" colspan="2"><input name="Send" type="submit"
				value="Formular absenden"> <input type="button"
				value="Formular l&ouml;schen" onClick="formLeeren(this.form);"></td>
		</tr>
		</tr>
	</table>
</form>
<a><small>Copyright © 2013 <a href="#">GTM-Dienstleistungen UG 

</small> </a>
<?php
} // Formular erstellen ende
###############################################################################
# FUNKTIONEN
###############################################################################

/**
 * isValidEmail
 * Prüft ob eine Emailadresse gültig ist mittels filter_var() und getmxrr()
 * @param String    $email
 * @return boolean
 */
function isValidEmail($email){
	//PHP-Filter anwenden
	$email = filter_var($email, FILTER_VALIDATE_EMAIL);
	if($email === false) return false;
	//Und noch die Domain testen
	list($name,$domain) = explode('@',$email);
	return (getmxrr ($domain,$mxhosts));
}
/**
 * Scheibt checked wenn der Wert im Array ist
 * @param array<Variant>    Array aller mögleichen Werte
 * @param variant           gesuchter Wert
 */
function echoCheckedFromArray($array, $value){
     //Prüfen ob a) Der Array exisitert und b) obs ein Array ist
    if(isset($array) && is_array($array)){
        //Prüfen ob der Wert im Array vorhanden ist
        if(in_array($value, $array)){
            echo 'checked="checked"';
           }
        }
    }
    ?>

Wenn du es eingerückt hättest, hättest du es selbst gefunden. ;-)
 
Generell solltes du dich noch mit mehr Funktionen und Klassen auseinandersetzen. Dein Code ist recht komplex und vom daher Fehleranfällig. Desweiterem finde ich die Sicherheit nicht sehr hoch. Zudem finde ich kann man bessere Mechanismen zur Spamabwehr einbauen. Zudem Frage ich mich, warum du den Header mit allen Daten fütterst. An deiner Stelle würde ich mich noch mal mehr mit PHP beschäftigen.
 
Generell solltes du dich noch mit mehr Funktionen und Klassen auseinandersetzen. Dein Code ist recht komplex und vom daher Fehleranfällig. Desweiterem finde ich die Sicherheit nicht sehr hoch. Zudem finde ich kann man bessere Mechanismen zur Spamabwehr einbauen. Zudem Frage ich mich, warum du den Header mit allen Daten fütterst. An deiner Stelle würde ich mich noch mal mehr mit PHP beschäftigen.

Ich bin noch in der Anfangsphase...Aber hier bekommt man sehr viel unterstützung. Danke nochmal an alle. Ich habe noch nicht alle funktionen beim Notepad raus, wie genau alles gemacht wird, lerne ich ja noch:)

Evtl so:

Wenn du es eingerückt hättest, hättest du es selbst gefunden. ;-)

Man kennt das ja, manchmal sieht man vor lauter Bäumen den Wald nicht. Das einzige ist, das er sich beim zurückgehen, nicht den haken bei "kopie an Absender" und die Angehängte Datei merkt. Und er zeigt den Betreff nicht an, wenn ich keinen Anhang mitsende.
 
Ich bin noch in der Anfangsphase...Aber hier bekommt man sehr viel unterstützung. Danke nochmal an alle. Ich habe noch nicht alle funktionen beim Notepad raus, wie genau alles gemacht wird, lerne ich ja noch:)

Vielleicht solltes du dir in der Bibliothelk auch mal ein Buch dazu ausleihen. Bei den Editor würde ich dir raten auf ein IDE zu gehen. Notepad ist ok, ich entwickle aber lieber mit Netbeans.
 
Wenn du einigermaßen vernünftig entwickeln willst, genügt Notepad eben nicht. Dir fehlen all die Dinge, die man heutzutage für anständige Entwicklung benötigt. Syntax-Highlighting, um Fehler schneller finden zu können (Klammer-Fehler, String-Enden, etc. etc.). Einen vernünftigen Debugger (für PHP empfiehlt sich entweder xdebug oder der Zend-Debugger als Extension). Code-Completion, Code-Hinting, Dokumentation mittels Tool-Tipps. Kurzum: Verwende Eclipse+PDT ;-)
 
Zurück