Nicht mehr ganz neu hier
Hallo Freunde der Nacht,
meine Tochter soll in der Schule eine HP basteln. Soweit so gut. Darin enthalten soll ein Formular mit Uploadfunktion sein. Ich habe eines im Netz gefunden und es läuft auch so weit. Jedoch einen kleinen Fehler hat es.
Die hochgeladene Datei kommt per E-Mail Anhang + einer "unbekannte Anlage 0000.txt" die leer ist. Jedoch der Inhalt aus den Formularfeldern ist weg. Wenn kein File hochgeladen wird kommt der Inhalt der Formularfelder an. Ich habe schon eine ganze Weile gesucht jedoch ohne den Fehler zu finden. Vielleicht habt Ihr ja eine Idee wo der Fehler liegt.
VG CMFA
Aufruf:
Datei:
meine Tochter soll in der Schule eine HP basteln. Soweit so gut. Darin enthalten soll ein Formular mit Uploadfunktion sein. Ich habe eines im Netz gefunden und es läuft auch so weit. Jedoch einen kleinen Fehler hat es.
Die hochgeladene Datei kommt per E-Mail Anhang + einer "unbekannte Anlage 0000.txt" die leer ist. Jedoch der Inhalt aus den Formularfeldern ist weg. Wenn kein File hochgeladen wird kommt der Inhalt der Formularfelder an. Ich habe schon eine ganze Weile gesucht jedoch ohne den Fehler zu finden. Vielleicht habt Ihr ja eine Idee wo der Fehler liegt.
VG CMFA
Aufruf:
PHP:
<?PHP session_start(); ?>
<?php
include_once("kontaktformular.php");
echo kontaktformular_fileupload(array("Mali@home.de"),"Onlinenachricht mit Datei Anhang","form2");
?>
Datei:
PHP:
if(!function_exists("kontaktformular_fileupload")){
function kontaktformular_fileupload($empf,$formname,$formid="cformup320",$pfad=""){
global $_POST,$_SESSION;
$allowed_endings = array('jpg','pdf','zip','rar'); // Array mit allen erlaubten Dateiendungen:
$allowed_filesize = 5242880; // Max. Dateigröße in Byte
$return = "";
$error = FALSE;
if(isset($formid) && !empty($formid)){
$data['Anrede'] = $_POST['anrede_'.$formid];
$data['name'] = $_POST['name_'.$formid];
$data['strnr'] = $_POST['strnr_'.$formid];
$data['plzort'] = $_POST['plzort_'.$formid];
$data['tel'] = $_POST['tel_'.$formid];
$data['email'] = $_POST['email_'.$formid];
$data['nachricht'] = $_POST['nachricht_'.$formid];
$data['captcha'] = $_POST['captcha_'.$formid];
$error = TRUE;
// Für Versand aus Empfänger-Adresse auf jeden Fall einen Array machen:
if(!is_array($empf))
$empf = array($empf);
if(isset($_POST['name_'.$formid]) && !empty($_POST['name_'.$formid]) &&
isset($_POST['anrede_'.$formid]) && !empty($_POST['anrede_'.$formid]) &&
isset($_POST['email_'.$formid]) && !empty($_POST['email_'.$formid]) && check_mail($_POST['email_'.$formid]) &&
isset($_POST['nachricht_'.$formid]) && !empty($_POST['nachricht_'.$formid]) &&
isset($_POST['captcha_'.$formid]) && !empty($_POST['captcha_'.$formid]) && md5($_POST['captcha_'.$formid]) == $_SESSION['antispam_'.$formid])
{
$error = FALSE;
$absender = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "",$_POST['email_'.$formid]);
$absender = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$absender);
$anrede = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$_POST['anrede_'.$formid]);
$name = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$_POST['name_'.$formid]);
$str = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$_POST['strnr_'.$formid]);
$plz = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$_POST['plzort_'.$formid]);
$tel = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$_POST['tel_'.$formid]);
$txt = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$_POST['nachricht_'.$formid]);
$mail_header = "From:".$name."<".$absender.">";
$mail_content = "Anrede: ".$anrede."
Name: ".$name."
Strasse Hausnummer: ".$str."
PLZ Ort: ".$plz."
Telefon: ".$tel."
E-Mail: ".$absender."
IP-Adresse: ".$_SERVER['REMOTE_ADDR']."
Nachricht:
".$txt."";
// Datei-Anhang verarbeiten
if(isset($_FILES['file_'.$formid]['name']) && $_FILES['file_'.$formid]['name'] != ""){
$split = pathinfo($_FILES['file_'.$formid]['name']);
$filename = $split['filename'];
$fileType = $split['extension'];
// Erlaubte Endungen / Dateigröße überprüfen
if(in_array($fileType,$allowed_endings) && $_FILES['file_'.$formid]['size'] <= $allowed_filesize){
$boundary = strtoupper(md5(uniqid(time())));
$mail_header .= "\nMIME-Version: 1.0"."";
$mail_header .= "\nContent-Type: multipart/mixed; boundary=\"".$boundary."\"";
$mail_body = "\nMIME-Version: 1.0"."";
$mail_body .= "\nContent-Type: multipart/mixed; boundary=\"".$boundary."\"";
$mail_body .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";
// "Normalen" Text-Inhalt einfügen:
$mail_body .= "\n--".$boundary."";
$mail_body .= "\nContent-Type: text/plain";
$mail_body .= "\nContent-Transfer-Encoding: 8bit\n";
$mail_body .= $mail_content;
$mail_body .= "\n--".$boundary."";
echo $mail_content;
$file_content = fread(fopen($_FILES['file_'.$formid]['tmp_name'],"r"),$_FILES['file_'.$formid]['size']);
$file_content = chunk_split(base64_encode($file_content));
$mail_body .= "\nContent-Type: ".mime_content_type($_FILES['file_'.$formid]['name'])."; name=\"".stripslashes($_FILES['file_'.$formid]['name'])."\"";
$mail_body .= "\nContent-Transfer-Encoding: base64";
$mail_body .= "\nContent-Disposition: attachment; filename=\"".stripslashes($_FILES['file_'.$formid]['name'])."\"";
$mail_body .= "\n\n".$file_content."";
$mail_body .= "\n--".$boundary."";
echo $mail_content;
}
else
$error = TRUE;
}
// Wenn kein Datei-Anhang ausgewählt wurde
else{
$mail_body = $mail_content;
//echo $mail_content;
}
foreach($empf as $empf_mail){
//echo $mail_header."<br /><hr><br />".$mail_body;
mail($empf_mail,$formname,$mail_body,$mail_header);
}
$return .= "<br /><p style=\"border: 1px solid green; padding: 5px;\">
<b>Ihre Bewerbung wurde erfolgreich verschickt und wird so schnell wie möglich bearbeitet.</b></p>";
}
if(isset($_POST['submit_'.$formid]) && !empty($_POST['submit_'.$formid]) && $error){
$return .= "<br /><p style=\"border: 1px solid red; padding: 5px;\">
Sie haben nicht alle benötigen Felder (*) ausgefüllt oder den Spamschutzcode nicht richtig eingegeben.</p>";
}
}
else $formid = rand_String(12);
/*value=\"".$data['anrede']."\"*/
$return .= "
<form enctype=\"multipart/form-data\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
<table cellpadding=\"0\" cellspacing=\"5\" class=\"formtab pluginwidth\">
<tr>
<td>Anrede *</td>
<td>
<select name=\"anrede_".$formid."\" style=\"width: 150px; \">
<option> </option>
<option>Herr</option>
<option>Frau</option>
</select></td>
</tr>
<tr>
<td>Vor- u. Nachname *</td>
<td><input class=\"tx\" type=\"text\" name=\"name_".$formid."\" value=\"".$data['name']."\" style=\"width: 150px; \" /></td>
</tr>
<tr>
<td>Strasse u. Hausnummer *</td>
<td><input class=\"tx\" type=\"text\" name=\"strnr_".$formid."\" value=\"".$data['strnr']."\" style=\"width: 150px; \" /></td>
</tr>
<tr>
<td>PLZ u. Ort</td>
<td><input class=\"tx\" type=\"text\" name=\"plzort_".$formid."\" value=\"".$data['plzort']."\" style=\"width: 150px; \" /></td>
</tr>
<tr>
<td>Telefon</td>
<td><input class=\"tx\" type=\"text\" name=\"tel_".$formid."\" value=\"".$data['tel']."\" style=\"width: 150px; \" /></td>
</tr>
<tr>
<td>E-Mail *</td>
<td><input class=\"tx\" type=\"text\" name=\"email_".$formid."\" value=\"".$data['email']."\" style=\"width: 150px; \" /></td>
</tr>
<tr>
<td>Datei max. 5 MB</td>
<td><input type=\"file\" name=\"file_".$formid."\" /></td>
</tr>
<tr>
<td valign=\"top\">Nachricht *</td>
<td><textarea class=\"tx\" name=\"nachricht_".$formid."\">".$data['nachricht']."</textarea></td>
</tr>
<!--captcha-->
<tr>
<td>Sicherheitscode</td>
<td><img src=\"".$pfad."secimg.php?formid=".$formid."\" alt=\"Sicherheitscode (Spamschutz)\" title=\"Sicherheitscode: Anti-Spam-System\" width=\"90\" height=\"30\" /></td>
</tr>
<tr>
<td>Sicherheitscode eingeben *</td>
<td>
<input type=\"text\" class=\"tx\" name=\"captcha_".$formid."\" maxlength=\"6\" style=\"width: 150px; \" />
</td>
</tr>
<input type=\"hidden\" name=\"formid\" value=\"".$formid."\" />
<tr>
<td colspan=\"2\" align=\"right\"><input type=\"submit\" name=\"submit_".$formid."\" value=\"Absenden\" /></td>
</tr>
</table>
</form>";
return $return;
}
}
if(!function_exists("rand_String")){
function rand_String($laenge){
mt_srand((double)microtime()*1000000);
$zahl = mt_rand(1000, 9999);
$passzahl = md5($zahl);
$newpass = substr($passzahl,0,$laenge);
return $newpass;
}
}
if(!function_exists("check_mail")){
function check_mail($email){
if(filter_var($email, FILTER_VALIDATE_EMAIL)) return TRUE;
else return FALSE;
}
}
// Mime-Typen von Dateien bestimmen
/*$filename Dateiname zu dem der Dateityp bestimmt werden soll
RETURN: Mime-Typ
*/
if(!function_exists('mime_content_type')) {
function mime_content_type($filename) {
$mime_types = array(
'txt' => 'text/plain',
'htm' => 'text/html',
'html' => 'text/html',
'php' => 'text/html',
'css' => 'text/css',
'js' => 'application/javascript',
'json' => 'application/json',
'xml' => 'application/xml',
'swf' => 'application/x-shockwave-flash',
'flv' => 'video/x-flv',
// images
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml',
// archives
'zip' => 'application/zip',
'rar' => 'application/x-rar-compressed',
'exe' => 'application/x-msdownload',
'msi' => 'application/x-msdownload',
'cab' => 'application/vnd.ms-cab-compressed',
// audio/video
'mp3' => 'audio/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
// adobe
'pdf' => 'application/pdf',
'psd' => 'image/vnd.adobe.photoshop',
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',
// ms office
'doc' => 'application/msword',
'rtf' => 'application/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
// open office
'odt' => 'application/vnd.oasis.opendocument.text',
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
);
$ext = strtolower(array_pop(explode('.',$filename)));
if (array_key_exists($ext, $mime_types)) {
return $mime_types[$ext];
}
elseif (function_exists('finfo_open')) {
$finfo = finfo_open(FILEINFO_MIME);
$mimetype = finfo_file($finfo, $filename);
finfo_close($finfo);
return $mimetype;
}
else
return 'application/octet-stream';
}
}