Hallo,
Wenn ich jetzt eine 40 MB grosse datei hochlade, bekomme ich trotzdem eine positive nachricht, dass die Mail inkl. Anhang geschickt wurde.
if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {Zuerst wird der erste Teil des Ausdrucks ausgewertet. Das heißt, die Funktion mail() wird aufgerufen und gibt true zurück, wenn der Versand geklappt hat. Dann wird versucht den zweiten Teil auszuwerten, was ein bei Ungleichheit ein false ergibt. true && false ergibt false. Die Bedingung des if ist nicht erfüllt.
if(@mail($this->destinationMail,$this->subject,"",$mail_header) && ($_FILES['datei']['error'] == UPLOAD_ERR_OK)) {
echo "Deine Nachricht wurde gesendet.";
}
elseif ($fileErr == UPLOAD_ERR_INI_SIZE)
{
echo "Die Dateigrösse überschreitet die zulässige Maximalgrösse von 8 MB.<br />Übertragung abgebrochen";
}
else {
echo "Es ist ein Fehler beim Senden der eMail aufgetreten.";
}
demnach sollte aber in jedem Fall "Es ist ein Fehler beim Senden der eMail aufgetreten." ausgegeben werden.
Daher meine Annahme, dass das Problem durch post_max_size verursacht wird, $_FILES['datei']['error'] den Wert "" [NÜSCHT™] und UPLOAD_ERR_OK den Wert 0 hat, ("" == 0) === true
Für Heinzi zum nachlesen, was ganz genau hier passiert: Vergleichs-Operatoren
$a ==$b (gleich)
$a===$b (identisch)
Gruß aus Berlin!
eddi