Attachmentmail und checkbox

myabe

Grünschnabel
hallo...
habe folgendes script, welches auch wunderbar geht.
allerdings lässt sich das formular nicht ohne datei versenden, was an dem if!empty liegt.
ich würde gern eine checkbox einfügen und das ganze mit

if checkbox yes dann mit attachment else ohne... so in art laufen lassen. oder kann man da einfach einstück weglöschen, damit das ganze auch ohne dateianhang läuft?
und eine max. dateigröße von 3MB hinzufügen.

kann da wer helfen?

PHP:
<?php
        if(isset($_POST) && !empty($_POST) ) {
            if(!empty($_FILES['datei']['name']) ) {
             $file_name = $_FILES['datei']['name'];
             $temp_name = $_FILES['datei']['tmp_name'];
             $file_type = $_FILES['datei']['type'];

             $base = basename($file_name);
             $extension = substr($base, strlen($base)-4, strlen($base));
             $allowed_extensions = array(".pdf",".jpg",".zip",".png");

             if(in_array($extension,$allowed_extensions) ) {
                 $from = $_POST['email'];
                 $datum = "".date("D, j.n.Y").$return;
                 $anrede = $_POST['anrede'].$return;
                 $betreff = $_POST['betreff'].$return;
                 $darstellung = $_POST['darstellung'].$return;
                 $nachname = $_POST['nachname'].$return;
                 $vorname = $_POST['vorname'];
                 $tele = $_POST['tele'].$return;
                 $nachricht = $_POST['nachricht'];
                 $to = "mail@mail.de";
                 $subject = "Preisanfrage";
                 $message = "
Anrede: $anrede
Name: $vorname $nachname
email: $from
Telefon: $tele
Betreff: $betreff
Darstellung: $darstellung
Datum: $datum 
Nachricht: $nachricht ";
                 $file = $temp_name;
                 $content = chunk_split(base64_encode(file_get_contents($file)));
                 $uid = md5(uniqid(time()));

                 $header = "From: ".$from."\r\n";
                 $header .= "Reply-To: ".$replyto."\r\n";
                 $header .= "MIME-Version: 1.0\r\n";

                 $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
                 $header .= "This is a multi-part message in MIME format.\r\n";

                 $header .= "--".$uid."\r\n";
                 $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
                 $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
                 $header .= $message."\r\n\r\n";

                 $header .= "--".$uid."\r\n";
                 $header .= "Content-Type: ".$file_type."; name=\"".$file_name."\"\r\n";
                 $header .= "Content-Transfer-Encoding: base64\r\n";
                 $header .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n\r\n";
                 $header .= $content."\r\n\r\n";

                 if (mail($to, $subject, "", $header)) {
                     echo "Anfrage war erfolgreich!"; 
                 } else {
                     echo "Anfrage gescheitert";            
                 } 
                 } else {
                     echo " Die Datei ist zu groß oder das Format wird nicht unterstützt";
                 }
             }
        }                             
?>
HTML:
<html>
</head>
<body>
<form method="post" action="Formular.php" enctype="multipart/form-data">
<table style="width:500px">
<tr><td colspan="2"></td></tr>
<tr>
    <td style="width:150px"><strong>Anrede:</strong></td>
    <td><select name="anrede">
    <option value=" - - -">- - - -</option>
    <option value="Herr">Herr</option>
    <option value="Frau">Frau</option></select></td>
</tr>
<tr>
    <td style="width:150px"><strong>Name:</strong></td>
    <td><input name="nachname" type="text" value="" size="40" maxlength="100" /></td>
</tr>
<tr>
    <td style="width:150px"><strong>Vorname:</strong></td>
    <td><input name="vorname" type="text" value="" size="40" maxlength="100" /></td>
</tr>

<tr>
    <td style="width:150px"><strong>E-Mail:</strong><br /></td>
    <td><input name="email" type="text" id="email" value="" size="40" maxlength="100" /></td>
</tr>
<tr>
    <td style="width:150px"><strong>Telefon:</strong></td>
    <td><input name="tele" type="text"  value="" size="40" maxlength="50" /></td>
</tr>
<tr>
    <td style="width:150px"><strong>Betreff:</strong></td>
    <td><select name="betreff">                        
    <option value="----">- - - -</option>
    <option value="1 Grundriss">1 Grundriss</option>
    <option value="2 Grundrisse">2 Grundrisse</option>
    <option value="3 Grundrisse">3 Grundrisse</option>
    <option value="mehr Grundrisse">mehr Grundrisse</option>
    <option value="1 Perspektive">1 Perspektive</option>
    <option value="2 Perspektiven">2 Perspektiven</option>
    <option value="3 Perspektiven">3 Perspektiven</option>
    <option value="mehr Perspektiven">mehr Perspektiven</option>
    <option value="25 sec Animation">25 sec Animation</option>
    <option value="30 sec Animation">30 sec Animation</option>
    <option value="35 sec Animation">35 sec Animation</option>
    <option value="40 sec Animation">40 sec Animation</option>
    <option value="45 sec Animation">45 sec Animation</option>
    <option value="50 sec Animation">50 sec Animation</option>
    <option value="55 sec Animation">55 sec Animation</option>
    <option value="60 sec Animation">60 sec Animation</option>
    <option value="längere Animation">längere Animation</option>
    <option value="Eigener Betreff">Eigener Betreff</option>
    </select></td>
</tr>
<tr>
    <td style="width:150px"><strong>Darstellung:</strong></td>
    <td><select name="darstellung">                        
    <option value="- - - ">- - - -</option>
    <option value="2D Grundriss/skizzenhaft">2D Grundriss/skizzenhaft</option>
    <option value="2D Grundriss/CAD">2D Grundriss/CAD</option>
    <option value="3D Grundriss">3D Grundriss</option>
    <option value="Perspektive fotorealistisch (normal)">Perspektive fotorealistisch (normal)</option>
    <option value="Perspektive fotorealistisch (detailiert)">Perspektive fotorealistisch (detailiert)</option>
    <option value="Perspektive skizzenhaft">Perspektive skizzenhaft</option>
    <option value="Eigene wünsche">Eigene wünsche</option>
    </select></td>
</tr>
<tr>
    <td style="width:150px"><strong>Nachricht:</strong></td>
    <td><textarea name="nachricht" cols="40" rows="10" style="white-space: nowrap;"></textarea></td>
</tr>
<tr>
<tr>
    <td style="width:150px"><strong></strong></td>
    <td><input type="checkbox" name="checkbox" value="1">Dateianhang<br></td>
</tr>
<tr>
    <td style="width:150px"><strong>Dateianhang:</strong></td>
    <td><input type="file" name="datei"  value="" size="30" maxlength="20" /></td>
</tr>

<tr>
    <td style="width:150px"><strong></strong></td>
    <td><input type="submit" value="Absenden"/></td>
</tr>
</tr>
</table>
</form>
</body>
</html>

mein lösungsansatz wäre irgendwie so in der art
PHP:
if(isset($_POST['checkbox']))
        if(isset($_POST) && !empty($_POST) ) {
            if(!empty($_FILES['datei']['name']) ) {
             $file_name = $_FILES['datei']['name'];
 //.................scriptkürzung
                     echo " Die Datei ist zu groß oder das Format wird nicht unterstützt";
                 }
             }
        } else {
        if(isset($_POST) && !empty($_POST) ) {           
             if(in_array($extension,$allowed_extensions) ) {
                 $from = $_POST['email'];
                 $datum = "".date("D, j.n.Y").$return;
                 $anrede = $_POST['anrede'].$return;
                 $betreff = $_POST['betreff'].$return;
                 $darstellung = $_POST['darstellung'].$return;
für lösungen oder lösungsvorschläge wäre ich sehr dankbar

gruß myabe
 
Zuletzt bearbeitet:
Hallo,

ich würde die maxlength bei datei von 20 auf min 30 erhöhen, ich habe bei mir grade nach gesehen und wenn ich ein bild hochladen wöllte wer der Pfad zu lang.

lg
 
Dein Ansatz ist nicht schlecht. Du musst aber zusätzlich noch darauf achten das du aus dem Header des Mails auch die Anhangspezifischen Daten herausnimmst.
 
Zurück