Ankündigung

Einklappen
Keine Ankündigung bisher.

E-Mail Formular mit Dateianhang

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • E-Mail Formular mit Dateianhang

    Hi zusammen,

    ich bin ein ziemlicher PHP noob, habe damals mit einem Kumpel ein PHP Script geschrieben für den E-Mail Versand. Wobei er mir vorgesagt hat, was ich schreiben muss und das grundlegendste erklärt hat. Da habe ich sogar noch ein paar Feinheiten verändert etc. und das lief auch wunderbar.

    Mein Problem ist jetzt, dass noch die Möglichkeit hinzukommen soll, einen Dateianhang hochzuladen, am liebsten hätte ich da eine Begrenzung der Größe von 5MB und der Typen auf PDF, JPG, PNG, GIF, TIFF, BMP und TXT.

    Das Formular konnte ich schon bauen, allerdings kommt keine eMail an. Ich habe bis jetzt nur Teile aus dem Internet dazukopiert und angepasst, aber so richtig "durchsehen" tue ich da nicht

    Vielleicht guckt ihr nur einmal rüber und könnt einen simplen Fehler erkennen?

    Hier der PHP Teil:

    Code:
    <?php 
    						$mailnachricht="Über Ihre Homepage wurde eine Anfrage versendet\r\n\n";
    						// wenn das Formular übermittelt wurde
    						if(isset($_POST['absenden'])){
    						  while(list($feld,$wert)=each($_POST)){
    							// übermittelte Inhalte "entschärfen"
    							$wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);
    							$$feld=$wert; 
    							// die übermittelten Variablen werden zum "Text der Email" zusammengefasst
    							if($feld!="absenden") $mailnachricht.=ucfirst($feld).": $wert\r\n";
    						  }
    						  $mailnachricht.="\nDatum/Zeit: ". date("d.m.Y H:i:s");
    						  // Überprüfen ob alle Pflichtfelder gefüllt sind
    						  empty($nachname) ? $err[] = "<p class='mailfehler'>Bitte geben Sie Ihren Nachnamen an.</p>" : false;
    						  empty($email) ? $err[] = "<p class='mailfehler'>Bitte geben Sie Ihre eMail-Adresse an.</p>" : false;
    						  empty($nachricht) ? $err[] = "<p class='mailfehler'>Bitte geben Sie eine Nachricht ein.</p>" : false;
    						  empty($telefon) ? $err[] = "<p class='mailfehler'>Bitte geben Sie Ihre Telefonnummer an.</p>" : false;
    						  empty($strasse) ? $err[] = "<p class='mailfehler'>Bitte geben Sie Ihre Straße und Hausnummer an.</p>" : false;
    						  empty($plz) ? $err[] = "<p class='mailfehler'>Bitte geben Sie Ihre Postleitzahl und Ort an.</p>" : false;
    						  // wenn nicht, werden die Fehlermeldungen ausgegeben und das "halbgefüllte" Formular angezeigt
    						  if(!empty($err)) {
    							foreach($err as $fehler){
    							  echo $fehler;
    							} echo "<p class='mailfehler'><br/></p>";
    					?>
                                
                                <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
                                  <p>Vorname<br /><input name="vorname" value="<?php echo $vorname; ?>" type="text" size="35" maxlength="40"></p>
                                  <p>Nachname*<br /><input name="nachname" value="<?php echo $nachname; ?>" type="text" size="35" maxlength="40"></p>
                                  <p>eMail*<br /><input name="email" value="<?php echo $email; ?>" type="text" size="35" maxlength="50"></p>
                                  <p>Straße, Nr.*<br /><input name="strasse" value="<?php echo $strasse; ?>" type="text" size="35" maxlength="50"></p>
                                  <p>PLZ, Ort*<br /><input name="plz" value="<?php echo $plz; ?>" type="text" size="35" maxlength="50"></p>
                                  <p>Telefon*<br /><input name="telefon" value="<?php echo $telefon; ?>" type="text" size="35" maxlength="40"></p>
                                  <p class="nachricht"><br />Ihre Nachricht*<br /><textarea name="nachricht" cols="59" rows="6" maxlength="3000"><?php echo $nachricht; ?></textarea><br />
                                  <br />
                                  <p class="nachricht">Datei anhängen <input name="datei" type="file" size="50" maxlength="100000" accept="text/*"></p><br />
                                  <input type="submit" class="button absenden" value="Absenden" name="absenden">
                                  <input type="reset" class="button" value="Zurücksetzen" ></p>
                                </form>
                                
                                
    						<?php    // sind keine Fehler vorhanden, wird die Email versendet
    						  } else {
    							$mailbetreff="Anfrage Homepage";
    							$anhang = fread(fopen($datei, "r"), filesize($datei));
        						$anhang = chunk_split(base64_encode($anhang));
    							$boundary = md5(uniqid(time()));
    							$header='Mime-Version: 1.0' . "\r\n";
    							$header.='Content-Type: multipart/mixed; boundary='.$boundary. "\r\n";
    							$header.='Content-Transfer-Encoding: quoted-printable' . "\r\n";
    							$header.="From: $email";
    							$header.= "--".$boundary."\n";
    							$header.= "Content-Type: text/plain\n; charset=utf-8";
    							$header.= "Content-Transfer-Encoding: 8bit\n\n";
    							$header.= $mailnachricht."\n";						
    							$header.= "--".$boundary."\n";
    							$header.= "Content-Type: ".$typ."; name=\"".$datei."\"\n";
    							$header.= "Content-Transfer-Encoding: base64\n";
    							$header.= "Content-Disposition: attachment; filename=\"".$datei."\"\n\n";
    							$header.= $anhang."\n";
    							$header.= "--".$boundary."--\n";
    							// HIER DIE EMPFÄNGER EMAIL-ADRESSE ANPASSEN!!!        
    							echo (mail("hier ist meine mail adresse eingetragen", $mailbetreff, $mailnachricht, $header)) ? 
    							"<p class='mailafter'>Vielen Dank!<br><br>Ihre Nachricht wurde versendet! Wir antworten Ihnen schnellstmöglich.</p>": 
    							"<p class='mailafter'>Ein Fehler ist aufgetreten!</p>";
    						  }
    						// das Formular welches als erstes dem Besucher angezeigt wird
    						} else { ?>       
                                <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
                                  <p>Vorname<br /><input name="vorname" type="text" size="35" maxlength="40"></p>
                                  <p>Nachname*<br /><input name="nachname" type="text" size="35" maxlength="40"></p>
                                  <p>eMail*<br /><input name="email" type="text" size="35" maxlength="50"></p>
                                  <p>Straße, Nr.*<br /><input name="strasse" type="text" size="35" maxlength="50"></p>
                                  <p>PLZ, Ort*<br /><input name="plz" type="text" size="35" maxlength="50"></p>
                                  <p>Telefon*<br /><input name="telefon" type="text" size="35" maxlength="40"></p>
                                  <p class="nachricht"><br />Ihre Nachricht*<br /><textarea name="nachricht" cols="59" rows="6" maxlength="3000"></textarea><br />
                                  <br />
                                  <p class="nachricht">Datei anhängen <input name="datei" type="file" size="50" maxlength="100000" accept="text/*"></p><br />
                                  <input type="submit" class="button absenden" value="Absenden" name="absenden">
                                  <input type="reset" class="button" value="Zurücksetzen" ></p>
                                  
                                </form>
                <?php } ?>
    Vielen Dank schonmal!

    mfg

  • #2
    1. Lösche den jetzigen Code komplett! PHP_SELF darfst du so auf keinen Fall benutzen!
    2. Schaue mal in meiner Signatur wie man Mails sinnvoll versendet.
    [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
    [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

    Kommentar


    • #3
      hallo,
      erstmal danke für die antwort.
      puuuh, das ist ja nicht so schön
      also wenn ich das richtig verstehe gibt es fertige scripts zum email versand? das wäre ja schonmal gut. aber ich muss das ganze dann allerdings noch in ein formular verpacken.

      ich habe mir jetzt mal swift runtergeladen und habe jetzt ein script erwartet, dabei sind das hunderte ordner und dateien was mach ich denn jetzt?
      in dem beispiel des wunschzettels ist ja ein code vorhanden, kann ich den einfach so nehmen? dann wäre noch die frage wie ich das jetzt in ein formular quetsche?

      mfg

      Kommentar


      • #4
        Kennst du dich denn mit der PHP Formularverarbeitung aus?
        Dein erster Schritt muss es sein 3 Variablen zu befüllen, eine mit der Mailadresse, den Betreff und den MailInhalt. Anschließend schaust du dir das Beispiel an und setzt deine 3 Variablen ein.
        [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
        [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

        Kommentar


        • #5
          weiß ich nicht genau, ich werds probieren. also kann ich das beispiel aus dem thread benutzen? dann werde ich das mal machen und mich dann nochmal melden.

          danke schonmal

          mfg

          Kommentar


          • #6
            hi,

            ist das nicht schon die befüllung der variablen?

            Code:
             <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
                                          <p>Vorname<br /><input name="vorname" value="<?php echo $vorname; ?>" type="text" size="35" maxlength="40"></p>
                                          <p>Nachname*<br /><input name="nachname" value="<?php echo $nachname; ?>" type="text" size="35" maxlength="40"></p>
                                          <p>eMail*<br /><input name="email" value="<?php echo $email; ?>" type="text" size="35" maxlength="50"></p>
                                          <p>Straße, Nr.*<br /><input name="strasse" value="<?php echo $strasse; ?>" type="text" size="35" maxlength="50"></p>
                                          <p>PLZ, Ort*<br /><input name="plz" value="<?php echo $plz; ?>" type="text" size="35" maxlength="50"></p>
                                          <p>Telefon*<br /><input name="telefon" value="<?php echo $telefon; ?>" type="text" size="35" maxlength="40"></p>
                                          <p class="nachricht"><br />Ihre Nachricht*<br /><textarea name="nachricht" cols="59" rows="6" maxlength="3000"><?php echo $nachricht; ?></textarea><br />
                                          <br />
                                          <p class="nachricht">Datei anhängen <input name="datei" type="file" size="50" maxlength="100000" accept="text/*"></p><br />
                                          <input type="submit" class="button absenden" value="Absenden" name="absenden">
                                          <input type="reset" class="button" value="Zurücksetzen" ></p>
                                        </form>
            ansonsten finde ich dazu irgendwo ein gutes tut?

            mfg

            Kommentar


            • #7
              Lösche den folgende Code mal Ersatzlos, das ist nur ne Sicherheitslücke.
              PHP-Code:
              <?php echo $_SERVER["PHP_SELF"]; ?>
              Um alle Variablen in den value-Werten musst du noch ein htmlentities setzen, sonst hast du da auch ne Sicherheitslücke.
              [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
              [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

              Kommentar


              • #8
                hi,
                hab ich jetzt mal gemacht, ist das so richtig?

                Code:
                <form action="" method="post">
                                              <p>Vorname<br /><input name="vorname" value="htmlentities(<?php echo $vorname; ?>)" type="text" size="35" maxlength="40"></p>
                                              <p>Nachname*<br /><input name="nachname" value="htmlentities(<?php echo $nachname; ?>)") type="text" size="35" maxlength="40"></p>
                                              <p>eMail*<br /><input name="email" value="htmlentities(<?php echo $email; ?>)" type="text" size="35" maxlength="50"></p>
                                              <p>Straße, Nr.*<br /><input name="strasse" value="htmlentities(<?php echo $strasse; ?>)" type="text" size="35" maxlength="50"></p>
                                              <p>PLZ, Ort*<br /><input name="plz" value="htmlentities(<?php echo $plz; ?>)" type="text" size="35" maxlength="50"></p>
                                              <p>Telefon*<br /><input name="telefon" value="htmlentities(<?php echo $telefon; ?>)" type="text" size="35" maxlength="40"></p>
                                              <p><br />Ihre Nachricht*<br /><textarea name="nachricht" cols="59" rows="6" maxlength="3000"><?php echo $nachricht; ?></textarea><br />
                                              <p>Datei anhängen <input name="datei" type="file" size="50" maxlength="100000" accept="text/*"></p>
                                              <input type="submit" class="button" value="htmlentities(Absenden)" name="absenden">
                                              <input type="reset" class="button" value="htmlentities(Zurücksetzen)" ></p>
                                              <br />
                                              <input type="submit" class="button" value="htmlentities(Absenden)" name="absenden">
                                              <input type="reset" class="button" value="htmlentities(Zurücksetzen)" ></p>
                                            </form>
                was kommt dann als nächstes?

                mfg

                Kommentar


                • #9
                  ich habe mir jetzt mal swift runtergeladen und habe jetzt ein script erwartet, dabei sind das hunderte ordner und dateien was mach ich denn jetzt?
                  in dem beispiel des wunschzettels ist ja ein code vorhanden, kann ich den einfach so nehmen? dann wäre noch die frage wie ich das jetzt in ein formular quetsche?
                  Ohne PHP Grundlagen geht es nicht.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    ok und wo kann ich mir diese aneignen? ist das sehr Umfangreich?

                    Kommentar


                    • #11
                      http://www.peterkropff.de/site/php/php.htm

                      Da findest du gute Tutorials.
                      [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                      [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                      Kommentar


                      • #12
                        danke, die seite ist wirklich gut, ich verschlinge grade die infos
                        danach melde ich mich nochmal, vllt. reicht ja das wissen dann doch noch nicht vollkommen

                        mfg

                        Kommentar

                        Lädt...
                        X