Ankündigung

Einklappen
Keine Ankündigung bisher.

FTP Dateiupload und Mail-Versand

Einklappen

Neue Werbung 2019

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

  • FTP Dateiupload und Mail-Versand

    Hallo zusammen,

    ich bin dabei mir etwas zusammenzubasteln, eigentlich simpel.
    Ich möchte es möglich machen eine Datei hochzuladen und in meinen gewünschten FTP-Pfad zu verschieben. (Klappt super!)
    Dies möchte aber nicht in Zukunft ich machen, sondern die Besucher meiner Homepage.
    Ich bekomme also nicht mit wenn jemand eine Datei hochgeladen hat. (Es sei denn ich schaue jeden Tag ich den Upload-Ordner)
    Dies würde ich gerne mit einem Mail-Versand koppeln, sodass ein User eine Datei hochlädt, diese ins FTP verschoben wird und ich eine simple Mail bekomme, dass ein User etwas hochgeladen hat.
    anbei mein "Kunstwerk" . Ich komm echt nicht mehr weiter... Upload und verschieben klappt perfekt. E-Mail nicht...….. Hat jemand nen kleinen Tipp?!
    Liebe Grüße aus Magdeburg,
    René



    PHP-Code:
    $dir 'uploads';
    echo 
    '<form action="" method="post" enctype="multipart/form-data"><input name="datei" type="file" />&nbsp;<input name="upload" type="submit" value="Hochladen" /></form>';

    if(isset(
    $_POST['upload']))    {

      
    // Mail Versand:
        
    $empfaenger "empfaenger@mail.de";
        
    $absendername "Absender";
        
    $betreff "Datei-Upload";
        
    $text "Eine neue Datei wurde hochgeladen.";
        
    mail($empfaenger$betreff$text"From: $absendername");

        
    // Zufälliger Dateiname:
        
    $word md5(time());

        
    // Ein paar Zeichen vom Zufälligen Dateinamen abziehen
        
    $word substr($word, -7);

        
    // Dateifeld definieren
        
    $datei $_FILES['datei']['name'];

        
    // Dateiformat erfassen
        
    $info pathinfo($datei);
        
    $format $info["extension"];

        
    // Der entgültige Dateiname
        
    $dateiname $word.'.'.$format;

        
    // Erlaubte Dateitypen
        
    $allowed_types "(doc|docx|pdf||png|jpg|jpeg|gif)";

        if(
    preg_match("/\." $allowed_types "$/i"$_FILES["datei"]["name"])) {

            
    $dateiupload move_uploaded_file($_FILES['datei']['tmp_name'], "$dir/$dateiname");
            
    $adresse "speditionsleitung@deexpress.eu";
            
    $betreff "DEEXPRESS Upload";
            
    $inhalt "Neuer Upload";

            @
    mail($adresse,$betreff,$inhalt);

        } else {

            echo 
    'Ungültiges Dateiformat';

        }



  • #2
    Du verlässt dich auf die Dateiendung die vom Benutzer vergeben wurde. Und auch das Abgleichen mit den erlaubten Dateiendungen ist abenteuerlich.

    Lass lieber PHP den MIME-Type bestimmen, das ist zuverlässiger und weniger leicht zu manipulieren.

    Fehlermeldungen mit @ zu unterdrücken wenn etwas nicht klappt ist außerdem nicht die cleverste Idee. Du willst ja schließlich wissen was nicht funktioniert und ohne Fehlermeldung wird dir keiner sagen können was nicht geht.
    Würde aber schon von vorneherein empfehlen ein fertige Mailing-Library zu nutzen (wie z.B. PHPMailer oder Swiftmailer).
    "Software is like Sex, it's best if it's free." - Linus Torvalds

    Kommentar


    • #3
      Hallo,

      entferne mal das @-Symbol. Dies sorgt dafür, dass alle Fehlermeldungen, die von diesem Ausdruck erzeugt werden könnten, unterdrückt werden.

      Dennoch solltest du aber besser eine Mail-Library verwenden:
      https://php-de.github.io/jumpto/mail-class/

      Gruß
      sorry, shift-taste kaputt

      Kommentar


      • #4
        Wenn Du Benutzer erlaubst Dateien hochzuladen, musst du alles richtig machen um keine Sicherheitslücke zu verursuchen. Das ist ein sehr komplexes Thema. Da würde ich mir etliche Artikel zu diesem Thema im Netz suchen.

        Hier wäre mal ein guter Anfang: https://www.owasp.org/index.php/Unre...ed_File_Upload

        Kommentar

        Lädt...
        X