Kontaktformular mit Upload-Funktion

  • Also: Um den Upload-Komfort meiner Seite zu erhöhen, habe ich vor eine Art Kontaktformular für jede Dateigruppe (z.b. Abenteuer, Heldenbriefe,...) mit Dateifeld zu erstellen, sodass die gesamten Daten +Datei im Anhang an meine email-adresse gesendet werden. Nur habe ich bisher nirgends eine Variable gefunden für die Versendung einer Datei in einem Konatktformular als Anhang. WEr kann mir da helfen???
    (Bitte keine Php-Seiten wie php-welt, self-html oder so. Die Scripte scheiterten immer an der Anpassung)
    Hier:http://www.ingalfs-hallen.de.vu/upload_abenteuer.html ist der Link zur Abenteuer-Upload-Seite.

    Ingalf von Sturmfels
    Erbauer von Ingalfs Hallen
    ---------------------------------------------
    Und ich sage trotzdem G7 :D

  • Kennst du http://Formmailer.com ?
    Falls du dir einfahch nur die Eintragungen in einem Formular an deine Mailadresse schicken lassen willst, kann ich dir das empfehlen. Es sit für nichtkommerzielle Nutzung kostenlos, und einfach einzurichten.
    Und du kannst auch Dateien an deine Mailadresse schikcen lassen, über das Formular.
    Ein beispiel wie so ein Formular dann aussieht findest unter:
    http://mitglied.lycos.de/dresdenfusion/kontakt.html

    Sage nicht alles, was du weißt, aber wisse alles, was du sagst. (Matthias Claudius)

  • guck mal im php-manual (<!-- w --><a class="postlink" href="http://www.php.net">http://www.php.net</a><!-- w -->): die superglobale variable heißt $_FILE[\'name\'] , wobei name für den namen des upload-feldes aus deinem formular ist. da haste dann:

    $_FILE[\'name\'][\'name\'] = dateiname (der eingegeben wurde)
    $_FILE[\'name\'][\'size\'] = dateigröße (achtung: max. upload-größe ist meistens 2MB)
    $_FILE[\'name\'][\'tempname\'] = unter welchem temp-name der upload gespeichert ist.

    aus sicherheitsgründen würde ich vorerst die dateien aus dem temp-verzeichnis rauskopieren (siehe is_uploaded_file()).

    aber schau da nochmal genau nach. dann einfach das ganze als mailanhang verschicken. wie das geht siehe: http://www.dclp-faq.de/ (sehr! gute seite)

  • @Morgenstern
    Danke. Heißst das es würde auch nur sie superglobale variable reichen???
    Was meinst du mit dem aus sicherheitsgründen rauskopieren???

    Darnok
    lässt sich das auch an Formulare, die in Tabellen eingebettet sind (siehe mein Link) anpassen???

    Ingalf von Sturmfels
    Erbauer von Ingalfs Hallen
    ---------------------------------------------
    Und ich sage trotzdem G7 :D

  • Zitat

    @Morgenstern
    Danke. Heißst das es würde auch nur sie superglobale variable reichen???


    ähh... da verstehe ich die frage nicht. in der variable findest du alle infos zur hochgeladenen datei. nicht die datei selber. beispiele dazu findest du in der php-online-doku.

    Zitat

    Was meinst du mit dem aus sicherheitsgründen rauskopieren???


    a) die temp-datei wird nach dem request (auch aus sicherheitsgründen) gelöscht.
    B) mit der genannten funktion prüfst du, ob die datei tatsächlich aus deinem formular hochgeladen wurde und nicht einfach nur so an $_GET bzw. $_POST rangehängt wurde. kann sonst ausgenutzt werden, irgendwelchen mist auf den server zu laden, auch von außen ohne das formular.

  • nein, die reicht nicht. die datei wird in das temp-verteichnis des servers geladen. von dort musst du sie rauskopieren, je nach typ mit base64() konvertieren und an die mail anhängen. wie das genau geht (mit code) findest du auf der oebn geposteten url.

    http://www.dclp-faq.de/

    da gibt es extra n bereich, der sich nur mit dem thema befasst und recht gut erklärt. schau einfach da, dann dürfte alles klar sein.

  • Bei Formmailer benötigst du keinerlei Kenntnisse irgedneiner Sprache ausser HTML, du musst dich anmelden, und dann musst du nur noch in deinem Account das Formular gegebenenfalls konfigurieren (bei Dateiversand wichtig) und in deinem Formular ein Feld vom Typ \"hidden\" hinzufügen anhand dessen dein Formular erkannt wird.

    Sage nicht alles, was du weißt, aber wisse alles, was du sagst. (Matthias Claudius)