tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
736
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von ahykes
    ahykes ahykes ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Borken[NRW]
    Beiträge
    446
    Hallo Leutz,

    so versuche ich einen Download zu forcen:

    PHP-Code:
                if($_GET['dowlfile']){    
                    
    $fp $_GET['dowlfile'];
                    
    $file basename($fp); 
                    
    header("Content-type: application/force-download"); 
                    
    header("Content-Disposition: attachment; filename=\"".$file."\""); 
                    
    header("Content-Length: ".filesize($fp)); 
                    
    readfile($fp); 
                } 
    Das klappt auch fast. Die heruntergeladene Datei heißt so wie die Datei die ich laden wollte. Aber der Inhalt der Datei ist der der index.php Wie kann das denn sein?
    Aufgerufen wird das Script duch:

    "http://53.43.134.33/listing/index.php?dowlfile=C:/Program Files/xampp/htdocs/OI-Sicherung.zip&dir=C:/Program Files/xampp/htdocs"
     

  2. #2
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    Ich weiss es wirklich nicht. Einfach so ein paar Debug sachen.

    Gib mal for readfile() $fp aus und schau was drinsteht. Einfach schauen ob es nicht irgendwo anderst überschrieben/editiert wird.

    Liefrt filesize($fp) ein Resultat zurück. Also findet es das File? Versuche sonst mal mit file_exists() abzufragen ob das File existiert.

    Und sonst versuch mal im Pfad anstat '/', '\' zu verwenden. Finde es aber strange, dass es nicht funktioniert. Habe gerade letztens auch einen Filedownload gemacht auf einem Windowsrechner. Hat mit Slashes wunderbar funktioniert....

    Gruss
    X

    Edit:
    Habe was auf http://ch2.php.net/readfile gefunden:
    PHP-Code:
    Instead of using
    <?php
    header
    ('Content-Type: application/force-download');
    ?>
    use
    <?php
    header
    ('Content-Type: application/octet-stream');
    ?>
    Some browsers have troubles with force-download.
    Geändert von redX (13.10.06 um 10:11 Uhr)
     
    Es gibt ein leben vor dem Tod

  3. #3
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Du solltest noch prüfen, ob die angeforderte Datei überhaupt existiert und sie zu der Menge der erlaubten Dateien gehört. Denn sonst kann ja jede beliebige Datei heruntergeladen werden.
     
    Markus Wulftange

  4. #4
    Avatar von ahykes
    ahykes ahykes ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Borken[NRW]
    Beiträge
    446
    Es ja so: Der Aufruf, den ich vorhin gepostet habe, stammt von einem Directorie-Indexing. Dort wird jede Datei als Link wie oben ausgegeben. Daher existiert diese Datei also auf jeden Fall!
     

  5. #5
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    Dammit

    Dann versuch mal den anderen Header zu senden...

    Gruss
    X
     
    Es gibt ein leben vor dem Tod

  6. #6
    Avatar von ahykes
    ahykes ahykes ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Borken[NRW]
    Beiträge
    446
    Was meiste? Als anderer Dateityp`?
     

  7. #7
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    Zitat Zitat von redX Beitrag anzeigen
    Habe was auf http://ch2.php.net/readfile gefunden:
    PHP-Code:
    Instead of using
    <?php
    header
    ('Content-Type: application/force-download');
    ?>
    use
    <?php
    header
    ('Content-Type: application/octet-stream');
    ?>
    Some browsers have troubles with force-download.
    das da

    Gruss
    X
     
    Es gibt ein leben vor dem Tod

  8. #8
    Avatar von ahykes
    ahykes ahykes ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Borken[NRW]
    Beiträge
    446
    Sorry, dass hatte ich auch schon probiert. Ich habe aber den Fehler gefunden. *iefehler* Und zwar habe ich den obigen Code nicht in eine getfile.php gepackt und dann per "<a href=getfile.php?file=alex.txt"> aufgrufen auman!

    Jetzt gehts!

    Inhalt der getfile.php:
    PHP-Code:
        if($_GET[fp]){
        
    $fp $_GET[fp];
        
    $file basename($fp); 
        
    header("Content-type: application/force-download"); 
        
    header("Content-Disposition: attachment; filename=\"".$file."\""); 
        
    header("Content-Length: ".filesize($fp)); 
        
    readfile($fp); 
        } 
     

  9. #9
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Zitat Zitat von ahykes
    Es ja so: Der Aufruf […] stammt von einem Directorie-Indexing. Dort wird jede Datei als Link wie oben ausgegeben. Daher existiert diese Datei also auf jeden Fall!
    Wenn aber den Inhalt der „index.php“ ausgegeben wird, läuft irgendetwas falsch.
    Ich meinte auch, dass du den Wert, der schlussendlich der readfile()-Funktion übergeben wird, prüfen solltest.
     
    Markus Wulftange

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 09.04.10, 20:57
  2. image.getHeight(null) gibt immer -1 zurück?
    Von Layna im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 20.06.07, 12:56
  3. Performance SELECT mit FORCE INDEX
    Von muehl im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 20.04.07, 09:35
  4. Antworten: 4
    Letzter Beitrag: 19.06.03, 22:15
  5. funktion gibt immer FALSE zurück, warum?
    Von DieterWeber im Forum PHP
    Antworten: 3
    Letzter Beitrag: 22.09.02, 13:20