Pascal: Dateiupload mittels PHP

Hallöchen zusammen

Bin nun schon seit längerer Zeit am Fehlersuchen , was bei meinem Script nicht funzt :-(

Ich hoffe dass ihr mir weiterhelfen könnt. Was ich machen möchte:

Simpler Dateiupload und in einem Verzeichniss abspeichern. Mein Code:

Formular:
<form enctype="multipart/form-data" method="post" action="unterricht/promotionsupdate.php">
<input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
<input type="submit" value=" Absenden ">

Verarbeitung: unterricht/promotionsupdate.php
if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";
}

Zusätzliche Infos, welche ich zur Fehlereingrenzung ausprobiert habe:
echo $_FILES['upload']['name']; -> Der Name der ausgewählten Datei wird korrekt angezeigt

echo $_FILES['upload']['size']; -> Hier wird nur 0  ausgegeben, obrohl meine Testdatei 119 kb gross ist

Hat da jemand ne idee, was ich falsch mache? Ich sehe den Wald vor lauter Bäumen nicht mehr...

MFG

Pascal

  1. Hallöchen zusammen

    <form enctype="multipart/form-data" method="post" action="unterricht/promotionsupdate.php">
    <input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
    <input type="submit" value=" Absenden ">

    Verarbeitung: unterricht/promotionsupdate.php
    if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
    echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";

    Hat da jemand ne idee, was ich falsch mache? Ich sehe den Wald vor lauter Bäumen nicht mehr...

    Wo ist die variable $name definiert?
    Kennst Du die Seite?
    http://www.dclp-faq.de/q/q-formular-upload-php4.html
    Viel Spaß beim probieren..
    TomIRL

    1. Hallöchen

      Wo ist die variable $name definiert?

      Weiter Oben. Hab nicht alles angegeben...
      $name = "bla.pdf";

      Kennst Du die Seite?
      http://www.dclp-faq.de/q/q-formular-upload-php4.html

      Ja, kenne ich. Dort hab ich gelernt, dass ich nicht länger
      copy()
      verwenden soll...

      ;-)

      Grüssli

      Pascal

      1. Hallöchen
        Weiter Oben. Hab nicht alles angegeben...
        $name = "bla.pdf";

        Hast Du fehlermeldungen?
        Ist die Datei irgendwie angekommen?

        Kennst Du die Seite?
        http://www.dclp-faq.de/q/q-formular-upload-php4.html

        Ja, kenne ich. Dort hab ich gelernt, dass ich nicht länger
        copy()
        verwenden soll...

        Dann passe das Formular doch Schritt für Schritt an Deine Bedürfnisse an..
        Wo liegt Dein Problem?
        TomIRL

        1. Hallo nochmal

          Hast Du fehlermeldungen?

          nein, ich kriege keine Fehlermeldung, obwohl Fehlermeldungen eingeschalten sind.

          Dann passe das Formular doch Schritt für Schritt an Deine Bedürfnisse an..
          Wo liegt Dein Problem?

          Dieses Script hat noch nie funktioniert, ist keine Anpassung. Hab aber, was schon länger her ist sowas mit copy() realisiert. Blöderweise hab ich keinen Zugriff mehr auf dieses script. da liegt das Problem.

          Gruss

          Pascal

          1. Hallo!

            Dieses Script hat noch nie funktioniert, ist keine Anpassung. Hab aber, was schon länger her ist sowas mit copy() realisiert. Blöderweise hab ich keinen Zugriff mehr auf dieses script. da liegt das Problem.

            Versuch mal eine Datei mit weniger als 100.000 Byte zu senden. Siehe https://forum.selfhtml.org/?t=87337&m=519020.

            Grüße
            Andreas

            --
            SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
            1. Hallo!

              Dieses Script hat noch nie funktioniert, ist keine Anpassung. Hab aber, was schon länger her ist sowas mit copy() realisiert. Blöderweise hab ich keinen Zugriff mehr auf dieses script. da liegt das Problem.
              Versuch mal eine Datei mit weniger als 100.000 Byte zu senden. Siehe https://forum.selfhtml.org/?t=87337&m=519020.

              Mom.. Welche Rechte hat der Ordner wo Du was reinkopieren willsT?
              TomIRL

              1. Hallo TomIRL

                Habs mit Hilfe von Andreas rausgekriegt. Hab zuwenig nullen im Feld size gehabt, da liegt das problem.

                Hab trotzdem dank für deine Bemühungen...

                :-)

                Grüssli

                Pascal

            2. Hi Andreas

              BINGO!

              Vielen Dank...

              Gruss

              Pascal

              1. Hi!

                BINGO!

                schön ;-)

                Aber hast Du auch molilys Hinweis beachtet? https://forum.selfhtml.org/?t=87337&m=519041

                Es würde mich allerdings sehr wundern wie es funktionieren kann, wenn Du 'name' statt 'tmp_name' verwendest.

                Grüße
                Andreas

                --
                [remote-signature:http://knet-systems.de/tmp/rand_sig.php]
  2. Hi!

    <input name="upload" type="file" size="20" maxlength="100000" accept="text/*">

    echo $_FILES['upload']['size']; -> Hier wird nur 0  ausgegeben, obrohl meine Testdatei 119 kb gross ist

    Vielleicht besteht hier ein Zusammenhang? Bedenke im übrigen - auch wenn das hier zu greifen scheint, dass diese Beschränkung leicht auszuhebeln ist, daher serverseitig die Größe prüfen!

    Grüße
    Andreas

    --
    SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
    1. Hallo Andreas

      Vielleicht besteht hier ein Zusammenhang?

      Hast du eine Idee welcher?

      dass diese Beschränkung leicht auszuhebeln ist, daher serverseitig die Größe prüfen!

      Genau, mit $_FILES['upload']['size'];

      ;-)

      Gruss

      Pascal

      1. Hi!

        Vielleicht besteht hier ein Zusammenhang?

        Hast du eine Idee welcher?

        Ja ;-)

        Guck Dir mal unter http://de.selfhtml.org/html/formulare/datei_upload.htm an, was die verschiedenen Attribute bei

        <input name="upload" type="file" size="20" maxlength="100000" accept="text/*">

        so bewirken ;-)

        Grüße
        Andreas

        --
        SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
  3. Hallo,

    Verarbeitung: unterricht/promotionsupdate.php
    if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
    echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";
    }

    Zusätzliche Infos, welche ich zur Fehlereingrenzung ausprobiert habe:
    echo $_FILES['upload']['name']; -> Der Name der ausgewählten Datei wird korrekt angezeigt

    Was in 'name' steht, ist für move_upload_file() unwichtig. move_upload_file verschiebt Dateien. Es erwartet ein Quellpfad und einen Zielpfad. Der Quellpfad ist die temporäre Datei, die PHP automatisch angelegt hat. Diese Datei trägt einen Namen, der mit dem vom Browser übermittelten Dateinamen 'name' nichts zu tun hat. Wie auf der genannten Seite http://www.dclp-faq.de/q/q-formular-upload-php4.html beschrieben ist, findest du den Pfad zur temporären Datei unter 'tmp_name'. Dies muss also der erste Parameter von move_uploaded_file() sein.

    Mathias

  4. Hello,

    <form enctype="multipart/form-data" method="post" action="unterricht/promotionsupdate.php">
    <input name="upload" type="file" size="20" maxlength="100000" accept="text/*">
    <input type="submit" value=" Absenden ">

    Verarbeitung: unterricht/promotionsupdate.php
    if (!move_uploaded_file ( $_FILES['upload']['name'], $name)){
    echo "Upload der Datei "$upload_name" hat leider nicht geklappt!!!";
    }

    Hallo Pascal,

    wenn Du Dir keine Sicherheitslücken einfangen willst, dann solltest Du folgendes beachten:

    1. Den qualifizierten Zieldateinamen nicht direkt aus dem übertragenen Dateinamen bilden
       sondern zusammensetzen aus $YourSaveDirectory."/".basename($_FILES['upload']['name'])

    2. Bevor Du überhaupt anfängst, die hochgeladene Datei anzufassen, die Fehlernummer
       $_FILES['upload']['error'] abfragen.

    3. Dann auf jeden Fall den Typ prüfen. Dafür KEINESFALLS $_FILES['upload']['type']
       benutzen, sondern eine eigene Funktion oder ab PHP 4.3.0 auch
       http://de3.php.net/manual/en/function.mime-content-type.php
       oder bei Linux-Systemen die Systemfunktion 'file'. Die kann man ggf. über
       exec() aufrufen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau