Datei-Download - Header-Problem

Botze

Grünschnabel
Hallo,

ich habe ein eigenes CMS programmiert und dazu ein Script, mit dem man Dateien aus geschützten Verzeichnissen downloaden kann. Da mein CMS einen Header sendet und auch das Script ein Header sendet habe ich ob_start() und ob_end_flush() verwendet. Wenn ich über get ein File aufrufe kann ich es nur downloaden, wenn ich in dem if nicht prüfe, ob der user eingeloggt ist. Wenn ich doch in dem if prüfe ob der user eingeloggt ist, dann schmeißt er mich aus dem Internen Bereich raus und wenn ich mich wieder einloge, dann kann ich die Dateien runterladen. Das ist doch sehr komisch und ich habe schon alles, à la google etc, durchsucht.
Hier mal ein Code ausschnitt:

PHP:
//______________________________________________________________________________
//Icludierte DAteien
include_once "includes/globale_funct.inc.php";
include_once("includes/seite.class.php");
include_once("includes/download.class.php");
include_once("includes/user.class.php");

//LAYOUT - Header und LAyoutoben

OB_START();
define('SCRIPTNAME', $seite->url);

//Funktion die den Header baut
echo globaler_header($seite->title, "");

//Holt sich das Layout
echo globallayoutoben($seite->data['subject'], $seite->data['name'], SCRIPTNAME, $user->id_group); 

//Die Funktion holt sich die Datei vom Server
//So wird die Datei erfolgreich zum Download angeboten
if(!empty($_GET['file']) && !preg_match('=/=', $_GET['file'])) {
// if($user->angemeldet && !empty($_GET['file']) && !preg_match('=/=', $_GET['file'])) {
// mit der If Anweisung schmeißt er mich aus dem Internen Bereich ... aber wieso?! 
    if(file_exists ($dir.$_GET['file']))     {
        makeDownload($_GET['file'], $dir, $type);
    }       
}


//Inhalt
// Prüft ob der User eingeloggt ist
if($user->angemeldet){ 

//... Internes Zeug :-)

} else {
  echo "Sie sind nicht eingeloggt.";
}

//Inhalt Ende
// Seitenfooter
ob_end_flush();
echo globaler_footer();

//Seitenende

Ich hoffe, ihr könnt mir helfen :-)


Gruß Botze
 
Vielen Dank für deine Antwort. Aber ich glaube es liegt nicht an dem CMS, sondern an den zwei Headern.

Aber trotzdem zur Info: Die Klasse user speichert die Session Id wenn, dass PW und Login übereinstimmt. Dann werden verschiedene Variablen, wie $user->angemeldet = true und $user->name gesetzt. Das funktioniert super.

Jetzt ist auch noch ein neuer Fehler aufgetreten. Wenn die Funktion makeDownload(...) unter der Funktion globaler_header(...) steht wird die Datei zum Download angeboten, aber die Datei kann nicht angezeigt werden. Die Dateien sind alle pdfs. Wenn die makeDownload(...) über globaler_header(...) steht können die Dateien erfolgreich downgeloadet werden, aber leider noch immer ohne die Prüfung, ob der user eingelogt ist.

Hat jemand noch eine Idee?

Viele Grüße,
Botze
 
Zurück