vic20: bild upload funktioniert nur mit mac aber nicht mit pc

es geht um einen simplen jpg upload - das jpg wird aus dem temporären folder in das verzeichnis in dem sich das script befindet kopiert. das script erzeugt ein thumbnail des jpg und ueber html werden original-jpg und thumbnail dann aufgerufen. funktioniert einwandfrei mit jedem mac - sobald aber ein pc benutzer die seite benutzt bekommt er die fehlermeldung:

"Warning: Unable to access Kuerbis.jpg in /home/www/userordner/html/hochladen/index2.php on line 38"

den fehler würde ich ja als normales rechteproblem ansehen - aber dann könnte es doch nicht mit einem mac funktionieren??? macs koennen doch nicht auf einem entfernten server andere reaktionen auslösen oder? ich verstehe das nicht.

wer das script einsehen möchte: http://www.warbirds-pilots.com/hochladen/script.txt

  1. Hello,

    im ersten Moment schoss mir durch den Kopf "enctype ist falsch" aber das hast Du richtig gemacht.

    Dein Script weist aber einige andere schwere Mängel auf.

    1. Du benutzt automatische Script-Globals
       --> schalte register_globals ab und arbeite mit den
           "superglobalen" Arrays $_FILES, $_POST, $_GET...
    2. Du ermittelst des Typ des Files aus dem Mime-Type, den
       der Client Dir geschickt hat. Das solltest Du nicht tun.
       Der kann nämlich lügen!
       Ermittele mit getimagesize()
       http://de3.php.net/manual/de/function.getimagesize.php
       die richtigen Werte.

    3. Du übernimmst den Speichernamen für das Bild direkt aus dem
       Post. Könnte ein Nachteil sein. Oder ist der Speicherort für
       Bilder für jeden User abgesichert?

    Sonst kann ich keinen logischen Fehler entdecken, der das Verhalten erklären würde.

    Wie verhält sich denn Der Server beim Hochladen "normaler" Files? Macht er da auch Zicken?

    Welchen Client verwendest Du denn auf dem betroffenen PC?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Hello,

      Ich kann Dein Script auch nicht male eben schnell ausprobieren, das Du leider mir register_globals = ON arbeitest und ich meinen Server nicht umstellen möchte...

      Nimm mal zum Debug das @ vor dem Copy() weg und schau Dir die Fehlermeldungen an.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Danke für die Antwort - lag an der übermittlung des filetyps via Browser! Nicht nur das er theoretisch hätte Lügen können - auf allen PCs wurde der Filetype nicht mitübermittelt (habe ich erst gemerkt als ich Virtual-PC genommen habe und sehen konnte das meine eigene Fehlermeldung "ist kein JPG" vor der php Fehlermeldung erscheint - die Tester hatten mir das nicht gesagt sonst hätte ich hier gar nicht posten brauchen) habe nun die Abfrage rausgenommen und  speichere die hochgeladenen Bilder so das mir keiner ein böses Script unterjubeln kann.

        1. Hello,

          Danke für die Antwort - lag an der übermittlung des filetyps via Browser! Nicht nur das er theoretisch hätte Lügen können - auf allen PCs wurde der Filetype nicht mitübermittelt (habe ich erst gemerkt als ich Virtual-PC genommen habe und sehen konnte das meine eigene Fehlermeldung "ist kein JPG" vor der php Fehlermeldung erscheint - die Tester hatten mir das nicht gesagt sonst hätte ich hier gar nicht posten brauchen) habe nun die Abfrage rausgenommen und  speichere die hochgeladenen Bilder so das mir keiner ein böses Script unterjubeln kann.

          Du solltest das Script unbedingt auf $_FILES umstellen, da man $file_name ja auch beliebig per Formular erzeugen kann.

          und dann solltest Du den Filenamen mit basename() extrahieren. Kann allerdings sein, dass das durch die neue Wrapper-Funktion von $_FILES schon automatisch gemacht wird. Habe ich noch nie ausprobiert. Aber sicher ist sicher.

          man könnte sonst so Sachen machen, wie:

          content-filename: "../../../../../../etc/passwd";

          Ist mein liebstes Beispiel *gg*

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          1. Moin!

            content-filename: "../../../../../../etc/passwd";

            Oh! Der Server läuft mit root- Rechten? Das wäre aber sehr gefährlich. Selbst in den Seminaren, wo es darum geht den Indianer unter Windows zu betreiben betone ich immer, wie wichtig es ist, den Apache mit einem eigenen Benutzer zu starten. Unter Linux ist dies meines Wissens schon in der Voreinstellung ein spezieller Benutzer...

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
            1. Hello,

              content-filename: "../../../../../../etc/passwd";
              Oh! Der Server läuft mit root- Rechten? Das wäre aber sehr gefährlich. Selbst in den Seminaren, wo es darum geht den Indianer unter Windows zu betreiben betone ich immer, wie wichtig es ist, den Apache mit einem eigenen Benutzer zu starten. Unter Linux ist dies meines Wissens schon in der Voreinstellung ein spezieller Benutzer...

              Das kann man ja von außen nie wissen. Die meisten lassen ja hosten undhaben überhaupt keine Hanung davon, was ihre Provider so eingestellt haben.

              Standardrechte beim Out-of-the-Box-Linux sind außerdem auch: -rw-r--r--

              Und da könnte zumindest jeder die Konfigurationen _auslesen_.

              Ich hatte mal eine Anfrage für ein PHP-Seminar von der Elebum. Aber es sollte für "Fortgeschrittene, keinesfalls für Anfänger" sein. Ich habe dann dummerweise einen Fragebogen hingeschickt, um den Status zu ergründen. Hat dann dazu geführt, dass ich den Auftrag nicht bekommen habe, weil sie sich von mir verarscht gefühlt haben. Sie wollten "Fortgeschrittene" und nicht "Gurus". So ähnlich habe ich es dann später von einem  Bekannten, der in der Abteilung arbeitet, berichtet bekommen. Ein paar ausgefüllte Fragebögen hat er mir auch noch zugesteckt. Du hättest hier bei jedem geschrien "lies erstmal die FAQ".

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              1. Moin!

                Ich hatte mal eine Anfrage für ein PHP-Seminar von der Elebum. Aber es sollte für "Fortgeschrittene, keinesfalls für Anfänger" sein. Ich habe dann dummerweise einen Fragebogen hingeschickt, um den Status zu ergründen.

                So von Kollege zu Kollege:

                Mach das nie! Frage bei Seminarbeginn, schmeisse zur Not Deinen gesamten Plan über den Haufen. Ich persönlich halte meine Seminare immer "live", daß heisst: ich mache, was die Teilnehmer verstehen können... und gehe ohne jede Vorstellung ims Seminar. Dem Auftraggeber sage ich nur: "Selbstverständlich, ein Seminar für Fortgeschrittene".

                Du hättest hier bei jedem geschrien "lies erstmal die FAQ".

                Hier werde ich auch nicht fürs Geduldigsein bezahlt :)

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix®

                --
                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.