Readfile geht im Internet Explorer 6 nicht

=fire=

Erfahrenes Mitglied
Hallo,

ich habe mal ein kleines Script geschrieben das Dateien öffnet. Leider will es im Internet Explorer 6 nicht, weiß jemand wieso? In Word kommt dann z.b. eine Fehlermeldung das er die Datei nicht öffnen kann.

PHP:
$path = "/kunden/homepages/11/d31/";
$file = $_GET['file'];
$file2 = $path.$file;
$dateiname = basename( $file2 );
$path_parts = pathinfo($path.$file);
$extension = $path_parts["extension"];

if($extension == "pdf"){
    $type = "application/pdf";
}elseif($extension == "doc"){
    $type = "application/msword";
}elseif($extension == "zip"){
    $type = "application/zip";
    $download = true;
}elseif($extension == "jpg"){
    $image = true;
    $type = "image/jpeg";
}elseif($extension == "gif"){
    $image = true;
    $type = "image/gif";
}elseif($extension == "mpg"){
    $type = "video/mpeg";
}


if($download==true)
{
    header('Content-type: application/octet-stream');
    header('Content-Length: ' . filesize( $file2 ));
    header('Content-Disposition: attachment; filename="' . $dateiname . '"');
    session_start();
    if(isset($_SESSION['user_id'])) 
    { 
        readfile($file2);
    }else{
        die("Keine Zugriffsrechte!");
    }
}elseif($image==true)
{
    header( 'Content-Type: '.$type );
    session_start();
    if(isset($_SESSION['user_id'])) 
    { 
        readfile($file2);
    }else{
        die("Keine Zugriffsrechte!");
    }    
}else
{
    header('Content-type: '.$type); 
    header('Content-Disposition: attachment; filename="'.$dateiname.'"');
    session_start();
    if(isset($_SESSION['user_id'])) 
    { 
        readfile($file2);
    }else{
        die("Keine Zugriffsrechte!");
    }
}
 
Moin,

öffne mal die Datei mit einem normalen Editor, ich tippe, dort steht "Keine Zugriffsrechte!" drinnen.

Da ja der IE ansich mit dem readfile() nichts zu tun hat, gehe ich davon aus, dass die Session dort nicht existiert....allerdings hast du die Header schon vor der Prüfung der Session gesendet.

Lösung: erst die Session prüfen, falls sie nicht existiert, die Fehlermeldung ausgeben(ohne irgendwelche Header vorher) und die Sache beenden.
 
Wie, du öffnest mit dem Editor eine Datei, die nicht da ist? ;-]

Ich hab das jetzt mal nachgestellt, irgendwie scheint der IE da etwas mit dem session_start() nicht zu mögen, mit dem Cache ist auch irgendwas(Ergebnis dessen scheint die Fehlermeldung zu sein) :
der IE lädt das doc in den Cache, und Word will es dann von dort öffnen. Wenn der IE es nun nicht in den Cache geladen hat(was bei dem Skript der Fall ist), ist dort nichts zum Öffnen :eek:

Folgendes hat bei meinen Tests Abhilfe verschafft:

Direkt am Anfang des Skriptes:
PHP:
session_start();
header("Cache-Control: cache");

(die session_start()-Aufrufe im inneren des Skriptes natürlich entfernen)
 
Zurück