sven: Variable nicht belegt?

HAllo,

es fiel mir schwer einen passenden Titel zu formulieren..

Folgendes Problem:

Ich habe zum entwickeln einen WAMP hier.
Wenn ich ein Formular habe, und z.B. ein File uploaden will, aber jemand hat kein File gewählt, habe ich folgende abfrage:

if($file!='none')
          {

$dname = strtr($file_name," ","_");
           copy ($file, "../upload_referenz/".$dname);
          }
das if ($file!='none') hatte ich früher durch if(!$file) geschrieben, was imho auch richtig ist, aber auf meinem WAMP nicht klappt.

Auf dem Webspace sieht es aber wieder anders aus. Da bekomme ich be 1. Variante eine Fehlermeldung

(Warning: Unable to open '' for reading: No such file or directory in /is/htdocs/41264/www.audiokonzept-rental.de/admin/referenzen.php on line 77)

ist mir ja auch klar, weil $file "leer" ist.

wie kann ich meinen Wamp richtig konfigurieren?

oder woran liegt es?

Danke, sven

  1. Hallo

    Versuch doch per isset($file) in der if-abfrage zu überprüfen, ob was in File steht...

    Grüße

    David

    --

    "Nobody will ever need more than 640k RAM!"
    1981 Bill Gates
  2. Hio,

    if($file!='none')
              {

    $dname = strtr($file_name," ","_");
               copy ($file, "../upload_referenz/".$dname);
              }
    das if ($file!='none') hatte ich früher durch if(!$file) geschrieben, was imho auch richtig ist, aber auf meinem WAMP nicht klappt.

    das geht zwar nicht direkt auf deine Frage ein, denoch ein gut gemeinter Tipp.
    Ich nehme mal an $file kommt von deinem upload-Feld (<input type="file" name="file">), dann stellt PHP dieses als Variable zur Verfügung, jedoch _nur_ solange register_globals[1] auf on steht. Dies stellt jedoch die ein oder andere Sicherheitslücke dar. Z.b. könnte ich in diesem Skript ein Upload "simulieren" und so evtl an wichtige Dateiinhalte kommen. Mit z.b.

    <input type="hidden" name="file" value="c:/autoexec.bat">
    <input type="hidden" name="file_name" value="c:\scary.txt">
    <input type="hidden" name="file_type" value="text/plain">
    <input type="hidden" name="file_size" value="2000">.

    Besser ist über $_FILE (ab PHP 4.1 verfügbar) oder $HTTP_POST_VARS zu gehen. also isset($_FILES["file"]). Eine weitere Sicherheitslücke kann das blosse kopieren einer Datei darstellen, deswegen sollte man entweder immer mit is_uploaded_file prüfen oder gleich move_uploaded_file()[3] anstatt copy benutzen.

    gl & hf

    Thorsten

    [1] http://www.php.net/manual/de/configuration.php#ini.register-globals
    [2] http://www.php.net/manual/de/reserved.variables.php#reserved.variables.files
    [3] http://www.php.net/manual/de/function.move-uploaded-file.php

    1. HAllo,

      Das Problem mit den globals=on ist mir bekannt, aber 1. habe ich es ohne gelernt, und 2. sind sie bei meinem Provider so geschaltet.

      Für die Zukunft werde ich mir einen besseren Stil angewöhnen.

      Hat jemand einen Buchtip?

      Aber woher kommt mein Problem? Ist das eine Art Versionskonflikt?

      sven

      1. Hallo!

        Das Problem mit den globals=on ist mir bekannt, aber 1. habe ich es ohne gelernt, und 2. sind sie bei meinem Provider so geschaltet.

        Das ist ein Sicherheitsrisiko und der Provider kann das von heute auf morgen ändern, udn er wird es irgendwann ändern!

        Für die Zukunft werde ich mir einen besseren Stil angewöhnen.

        guter Plan ;-)

        Hat jemand einen Buchtip?

        Aber woher kommt mein Problem? Ist das eine Art Versionskonflikt?

        Sowas in der Art. Ich weiß jetzt nicht welche PHP-Version Du verwendest und welche relevanten Einstellungen Du in der php.ini hast, genausowenig wie dies bei der funktionierenden Version aussah.

        Aber das ist auch egal, lies einfach die beiden folgenden Seiten:

        so hast Du es gelernt, ist aber überholt(PHP3 - nicht mehr verwenden!):
            31.1. Wie funktioniert ein Datei-Upload über HTML-Formulare?
            http://www.dclp-faq.de/q/q-formular-upload-php3.html

        So sollte man das heute machen:
            10.11. Wie funktioniert ein Datei-Upload über HTML-Formulare?
            http://www.dclp-faq.de/q/q-formular-upload-php4.html

        Viele Grüße
        Andreas

      2. Hio

        Das Problem mit den globals=on ist mir bekannt, aber 1. habe ich es ohne gelernt, und 2. sind sie bei meinem Provider so geschaltet.

        Für die Zukunft werde ich mir einen besseren Stil angewöhnen.

        Ein so grosser Aufwand ist das ja nicht, diese Umstellung und warum erst in Zukunft damit beginnen? ;)

        gl & hf

        Thorsten