Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit header(Location)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit header(Location)

    Sooo...

    ich hab ein kleines Problem mit dem header.
    Ich will mir verschiedenste Dateien downloadbar machen.

    Hab mir das jetzt auch alles zusammengebaut, so wie ich es brauche:

    PHP-Code:
    <?
    include('includes/config.inc.php');
    include('includes/functions.inc.php');

    $daten = mysql_query("SELECT id,ordner,filename FROM ".$GLOBALS['tbl_files']." WHERE id = '".$_GET['fid']."'")or die(mysql_error());
    if(mysql_num_rows($daten)=='0')
        echo 'Keine Datei vorhanden';
    else
    {
        if($_SESSION['download']=='')
        {
            $data = mysql_fetch_array($daten);            
            
            $end = substr($data['filename'],-3,3);
            $file = name_of_file($data['filename']);
            $dl_dir = 'uploads/'.$data['ordner'].'/'.$data['filename'];
                  
            header("Content-type: application/".$end);
            header("Content-Disposition: attachment; filename=".$dl_dir);
            readfile($dl_dir);
            $_SESSION['download'] = 'ende';
        }
    }
    ?>
    Mein Prob ist jetzt, das ich folgendes rausbekomme:

    Download der Datei: upoads-1232434-leon.jpg

    Wie kann ich das ändern, bzw wo liegt der Fehler???

  • #2
    Hi,

    vielleicht hilft dir das:

    Wie realisiere ich einen Dateidownload mit PHP?

    Ambience
    Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

    Kommentar


    • #3
      Hallo,

      ausserdem davor noch evtl. $GLOBALS in $_GLOBALS ändern (so sollte es heissen), und nicht die $_GET['id'] aus Sicherheitsgründen direkt in die Datenbankabfrage schmeißen.

      Lieber vorher:
      $id = $_GET['id'];
      settype($id, 'int');

      um sicherzustellen, dass da nix böses ankommt.

      Viel Erfolg, schöne Grüße, Lasse

      Kommentar


      • #4
        Zitat von pixelkoenig Beitrag anzeigen
        Hallo,

        ausserdem davor noch evtl. $GLOBALS in $_GLOBALS ändern (so sollte es heissen)
        ähm... ne... das sind von mir definierte Variablen. Und die heissen nunmal $GLOBALS, weil $_GLOBALS ja net geht

        Das Ganze wird noch verbessert, sieht nun erstmal so aus:
        PHP-Code:
        <?
        session_start();

        include('includes/config.inc.php');
        include('includes/functions.inc.php');

        $daten = mysql_query("SELECT * FROM ".$GLOBALS['tbl_files']." WHERE id = '".$_GET['fid']."'")or die(mysql_error());
        if(mysql_num_rows($daten)=='0')
            echo 'Keine Datei vorhanden';
        else
        {
            $data = mysql_fetch_array($daten);
            
            $file = $data['filename'];
            
            if($_SESSION['user_premium']!='1')
            {
                $limit = $dl_limit; // Hier gibt man ein, wie viel Kilobyte pro Sekunde max. geladen werden dürfen.
                $verzeichnis = '/srv/www/tencents.de/html/upload/uploads/'.$data['ordner'].'/'; // Downloadverzeichnis
                $rundeslimit = round($limit*1024); // Kilobytewert in Byte umrechnen
                
                header('Cache-control: private');
                header('Content-type: application/octetstream'); 
                header('Content-Length: '.filesize($verzeichnis.$file));
                header('Content-Disposition: attachment; filename='.$file); 
                // Attachementheader senden
                
                flush();
                $fd = fopen($verzeichnis.$file, 'r');
                while(!feof($fd)) 
                {
                    echo fread($fd, $rundeslimit);
                    flush();
                    sleep(1);
                }
                fclose ($fd);
                // Die Speed-Sperre wird geschaltet
            }
            else
            {
                $file = name_of_file($file);
                $dl_dir = $verzeichnis.$file;
                
                header('Content-Type: application/octet-stream');
                header('Content-Disposition: attachment; filename='.$file);
                readfile($dl_dir);    
            }        
        }
        ?>

        Kommentar


        • #5
          funktioniert es denn nun auch so, wie du es wolltest?
          Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

          Kommentar


          • #6
            ja, funktioniert alles einwandfrei. ich werd euch irgendwann mal mitteilen, wofür ich das ganze brauchte. ziehe hier grad ein projekt auf.

            Kommentar

            Lädt...
            X