Hallo,
für file-inputfelder ist eine vorbelegung nicht erlaubt, aus sicherheitsgründen.
Aha, also geht das gar nicht, da kann ich ja auch probieren wie ich will! :-)
Aber trotzdem danke für den Hinweis!die datei wurde aber schon beim ersten abschicken mit hochgeladen (sofern der user eine ausgewählt hatte) - diese kannst du also schon bei der überprüfung des formulares sichern, und nachher mit den restlichen korrigierten daten kombinieren.
Wie geht denn das? Kannst du das vielleicht erklären oder kennst du einen guten URL? Wäre wirklich klasse!
Zum beispiel mit Cookies oder Sessions oder
$name=explode('.'$_FILES['userfile']['name']);
$pruef=md5($_FILES['userfile']['tmp_name'].$_SERVER['USER_AGENT']);
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$pruef.$name[count($name)-1])
echo '<input type="hidden" name="datei_id" value="'.$pruef.'">';
nein, dein ellenlanges script mit tonnenweise unrelevantem HTML-code schaue ich mir jetzt nicht durch, und vermutlich auch kaum ein anderer hier.
Oh, oh, daran habe ich gar nicht gedacht. Aber dabei hatte ich schon alles irrelevante aus dem HTML-Code gelöscht...
Aber könntest du vielleicht doch mal drüber schauen? Unten habe ich das Script noch etwas abgespeckt. Ich kann den Fehler echt nicht finden!
generell sollte immer erst der Scriptteil notiert werden und dann die Ausgabe und kein Vermischen. Denn Dein Code läßt sich äußerst schwer debuggen...
<?php
Maximale Größe des Attachments in Bytes:
$max_attach_size = 500000;
if ($sent==1)
Dein Script funktioniert nur mit register_global=On
{
if ($_FILES['file']['size'] > $max_attach_size) {
echo "<strong>Attachment zu groß (".number_format($_FILES['file']['size']/1000,0,",","")." KB) - Maximalgröße: ".number_format($max_attach_size/1000,0,",","")." KB</strong><br>";unset($sent);
unset($sent) bringt Dir in diesem, wie auch in allen anderen Fällen nicht mehr als eine Codevergrößerung
}
$nachr = "Name: " . $vorname . " " . $name . "\n
E-Mail: " . $email . ";
$nachr .= "Anschrift: " . $strasse ." " . $plz . " " . $ort . ";
$nachr .= "Ihre Nachricht: " . $eingabe;
if (isset($_FILES['file']['name']) && trim($_FILES['file']['name']) != "") {
$nachr .= "<tr>\n <td class="rechts">Attachment:</td>\n <td>".$_FILES['file']['name']."</td>\n</tr>";
}
$message="<html><body>";
$message.=$nachr;
Du arbeitest oben mit einer Tabellenzeile. Du öffnest keine Tabellenspalte!
$message.="</body></html>";
$email_from_name = "$vorname $name";
$email_from = "$email_from_name <$email>";
prüfe die E-Mail auf Gültigkeit!
$email_to = "FF Altenbach info@ff-altenbach.de";
if (isset($_FILES['file']['name']) && trim($_FILES['file']['name']) != "") {
$datei_content = fread(fopen($_FILES['file']['tmp_name'],"r"),filesize($_FILES['file']['tmp_name']));
$datei_content = chunk_split(base64_encode($datei_content),76,"\n");
// Boundary:
$boundary = md5(uniqid(rand()));
unnötig prerformanclastig es reicht ein eindeutiger vordefinierter String
// Mail-Header:
$header = "From: FF Altenbach Mail-Service post@ff-altenbach.de\n";
$header .= "X-Sender-IP: $REMOTE_ADDR\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:
ab hier ist es kein header mehr es ist Mail-Body der Headertrenner ist UNBEDINGT chr(13).chr(10); dies läßt sich auf manchen Betriebssystemen mit "\r\n" representieren Das ist auch der Grund für die Textanzeige des HTMLs
$header .= "--".$boundary;
$header .= "\nContent-Type: text/html";
$header .= "\nContent-Transfer-Encoding: 8bit";
$header .= "\n\n".$message;
// Attachment:
$mail_header .= "\n--".$boundary;
$mail_header .= "\nContent-Type: ".$_FILES['file']['type']."; name="".$_FILES['file']['name'].""";
ACHTUNG! gerade Freund IE liefert nur alzugerne einen falschen MIME-Type mit. gehe lieber nach der Endung oder nutze mime_content_type() oder http://pecl.php.net/package/fileinfo
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename="".$_FILES['file']['name'].""";
$mail_header .= "\n\n".$datei_content;
// Ende:
$header .= "\n--".$boundary."--";
// Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
if (mail($email_to,"Eine E-Mail von meiner Webseite","",$header)) {
if ($kopie==on) {
$header="From: FF Altenbach Mail-Service post@ff-altenbach.de\n";
$header .= "Reply-To: $email\n";
$header .= "X-Mailer: PHP/" . phpversion(). "\n";
$header .= "X-Sender-IP: $REMOTE_ADDR\n";
$header .= "Content-Type: text/html";
mail("$email_from","Kopie Ihrer E-Mail an FF Altenbach","$message",$header);
}
}
}
else {
$header="From: FF Altenbach Mail-Service post@ff-altenbach.de\n";
$header .= "Reply-To: $email\n";
$header .= "X-Mailer: PHP/" . phpversion(). "\n";
unnötiger Müll
$header .= "X-Sender-IP: $REMOTE_ADDR\n";
$header .= "Content-Type: text/html";
if (mail($email_to,"Eine E-Mail von meiner Webseite",$message,$header)) {
if ($kopie==on) {
mail("$email_from","Kopie Ihrer E-Mail an FF Altenbach",$message,$header);
}
}
}
}//schließende Klammer für if($vorname AND $nachname AND $email)
}//schließende Klammer für if($sent==1)if(!$sent) {
?><form name="feedback" action="<? echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data">
Attachment: <input type="file" name="file" size="20"/>
<input id="kopie" type="checkbox" name="kopie" checked> Ich wünsche eine Kopie meiner Anfrage an mein E-Mail Postfach
<input name="submit" type="submit" value="Absenden">
</form>
<?php
}//schließende Klammer für if(!$sent)
?>
Gruß aus Berlin!
eddi