PHP Problem - Frage...



  • Hallo Zusammen!

    Auf meiner Webseite, der hoster unterstüzt KEIN MySQL!, habe ich ein einfaches, aber gelungenges Uploadskript, das auch funktioniert.

    Wie kann ich es so erweitern, dass es automatisch, wenn man auf UPLOAD klickt, die Abfrage macht, wie viel Platz auf meinem Server vorhanden ist? Wenn 25MB überschritten, dann NICHT uploaden, ansonsten schon. wie kriege ich das hin?

    Hier mal die Codes:

    upload.php

    <?php 
    if(isset($upload)) 
    { 
    
    copy("$datei", "./downloads/$datei_name"); 
    
    } 
    else 
    { 
    echo "Fehler: Datei wurde Nicht Gesendet"; 
    } 
    ?>
    <head>
    </head><noscript><body></body></noscript> 
    <Body background=white font color=blue align=center>
    <B>Die Datei wurde erfolgreich hochgeladen!<BR>
    Nur bis Sie zum Download angeboten werden kann, gehts noch ein bisschen.</B><HR>
    Aber nichts für ungut! Eventuell wird Sie manuell freigeschaltet!<BR><HR>
    <a href="main.html" target=main>Zurück...</A>
    

    upload.html: (hier nur das UPLOADFORMULAR!!!)

    <form ENCTYPE="multipart/form-data" method="post" action="upload.php"> 
    File 1 <input type="file" name="datei" size="20"> <BR>
    
    <input type="submit" name="upload" value="upload">
    </form>
    

    mfg
    Programmer 😉

    [ Dieser Beitrag wurde am 12.12.2002 um 21:54 Uhr von Programmer85 editiert. ]



  • 1. Falls dein Hoster dir nur 25 MB gibt, blockt er es doch sicher automatisch ab, dass du mehr hochlädst!
    2. Du könnstest dich rekursiv durch alle Verzeichnisse hangeln und dann jeweils die Dateigrößen der Dateien zusammenzählen!



  • Original erstellt von flenders:
    1. Falls dein Hoster dir nur 25 MB gibt, blockt er es doch sicher automatisch ab, dass du mehr hochlädst!
    2. Du könnstest dich rekursiv durch alle Verzeichnisse hangeln und dann jeweils die Dateigrößen der Dateien zusammenzählen!

    Wie flenders bei Punkt 2 sagt ist das schon so richtig, aber das würde ich in ein extra Script packen, so das extra Script das macht.

    Das extra Script hangelt sich durch die Ordner und nimmt die größen und addiert due dann.
    DAs ergebnis kannst du dann in ein Texfile speichern auf dem Server.

    Wenn ud auf Senden drückst um dein File uplzuloaden mußt du nur die Größe der hochzuladenden Datei abfragen und dann abrechnen vom space...

    **denk_anstoß*
    Bsp.:
    Space_benutzt = textfile
    Space_max = Webspace vom HJoster (25MB)
    File_size = Datei größe die grad upgelodet werden soll.

    Space_max - space_benutzt = Space_frei

    Space_frei - File_size = ergebnis. (Ist das im Plus bereich, kannst du es upload, ist es aber im negativen bereich ist das file zu groß.).*

    Viel Spaß beim Umsetzen.

    [ Dieser Beitrag wurde am 13.12.2002 um 11:55 Uhr von DJ BlackEagle editiert. ]



  • [ Dieser Beitrag wurde am 13.12.2002 um 11:56 Uhr von DJ BlackEagle editiert. ]



  • Danke für den "Denkanstoss" 😉

    Nur:

    1. Ich habe 30MB! zur verfügung!!!
    2. Ich möchte nur, dass der Server nicht überlastet wird also möchte ich einfach den ORDNER DOwnloads auf meinem Server auf 25MB halten... nicht drüber..

    3. Ein erstes einfaches Skript OHNE MySQL, das mir eine Grafik des noch verfügbaren Webspeicherplatzes anzeigt, würde fürs erste schon reichen. Doch wo hole ich solche Sachen?

    mfg
    Programmer 😃



  • also wenn du php kannst kannst du es locker selbst programmieren.



  • Mit disk_total_space kannst du überprüfen, wie groß ein Ordner ist. Dann musst du wie schon vorher gesagt einfach überprüfen, wieviel Platz du noch hast bis zu deinem Maximum (in deinem Fall 25 MB) und musst schauen, ob die abzuloadende File da noch reinpasst:
    http://www.dclp-faq.de/q/q-datei-upload-ftp.html



  • Ja, klar. Nur: Ich habe erst angefangen, mit PHP umzugehen....

    Ich denke mal an sowas:

    if($./downloads/>20MB)
    {
    copy($datei, "$./downloads/$datei_name");
    }
    else
    {
    echo "Fehler: Datei nicht gesendet oder kein Platz mehr frei!";
    }
    

    Wenn meine obige Vermutung etwa aufgeht... wie soll das Skript erkennen, das es den GESAMTSPEICHERPLATZ vom Ordner "Downloads"! auslesen soll??



  • hä, hast du dir mal die von mir oben gepostet Links angeschaut ?



  • Whooops!!!
    Das hab ich übersehen! sorry! 😉



  • Okay... habe jetzt eine SPACE.PHP angelegt:

    <?
    $df = disk_total_space("http://free.cyberhost.tk/programmer/downloads");
    echo "Noch $df frei!";
    ?>
    

    Nur bekomme ich

    Noch frei! anstatt Noch 12 MB frei oder so... warum??



  • Ok. hat sich erledigt...

    Wird mir aber alles nur in BYTES!! angezeigt!!!
    Kann man irgendwie nicht bewirken, dass der alles in MB anzeigt??
    Mein COde sieht momentan in der SPACE.PHP so aus:

    <?
    $df = disk_total_space("downloads/");
    echo "Noch\n";
    echo $df;
    echo "\nBytes frei!";
    ?>
    


  • einfach 2 mal durch 1024 teilen! (bzw. durch 2^20)



  • sieht dein upload-script wirklich so aus?!?
    dann ist das eine massive sicherheitslücke!

    man könnte damit beliebige datein überschreiben.
    das ist zwar nicht schwer, aber ich schreibe jetzt mal
    trotzdem nicht wie es geht. wenn du fragen hast ->mail



  • Original erstellt von Tendor:
    **sieht dein upload-script wirklich so aus?!?
    dann ist das eine massive sicherheitslücke!

    man könnte damit beliebige datein überschreiben.
    das ist zwar nicht schwer, aber ich schreibe jetzt mal
    trotzdem nicht wie es geht. wenn du fragen hast ->mail**

    Wenn du fragen hast ->Mail

    hmm...
    Danke!!! 😉 *freu*!
    So einen "Support" habe ich lange nicht mehr hier im Forum erhalten! ;))))))



  • grmpf...ich wollte nicht hier schreiben wie man die lücke ausnutzt.

    aber von mir aus... 😉
    du solltest prüfen, ob es die datei nicht schon gibt und sicherstellen, dass der dateiname keine / und .. enthält.
    sonst könnte man dein script so aufrufen:

    upload.php?datei=irgenwas&datei_name=../index.php&upload=1

    dein copy befehl sieht dann so aus:

    copy( "irgendwas", "./downloads/../index.php" );

    wenn du pech hast (chmod) wäre dann deine index.php futsch...


Anmelden zum Antworten