phpbar.de logo

Mailinglisten-Archive

[php] session_start() und header() inkompatibel?

[php] session_start() und header() inkompatibel?

Garvin Hicking garvin_(at)_atrava.de
02 Jan 2001 13:01:00 +0100


Hi!


Ich habe ein großes Problem in einem Script. Dieses Script wird per GET- 
Parameter aufgerufen und erstellt abhängig von diesem Parameter eine PDF- 
Datei, und soll diese direkt ausgeben. Als zusätzliches Feature darf  
dieses Script nur von Usern aufgerufen werden, die per voriger Session  
authentifiziert sind.

Jedoch funktioniert das Script nur ohne eine Session zu initialisieren.  
Sobald ein session_start() dazu kommt, produziert das Script keine  
Ausgaben mehr. Es erscheint im IE5 nur das Fenster zum speichern oder  
aufrufen, aber egal was man klickt heißt es, die Datei könne nicht  
gedownloadet werden.

Hier das Script:
--------------------
<?PHP
unset($user);
session_start();
$htmloutput = "false";
require "functions.inc.php";

if ($user["auth"] == "true" AND isset($pdfauftragid) AND $pdfauftragid !=  
"")
{
   $var = PrepareGet($pdfauftragid, $user[id]);

   if ($var == "false")
   {
     echo "<html><body>Sie d&uuml;rfen die PDF-Dateien nur
           im eingeloggten Zustand betrachten, und nur Ihre eigenen
           Auftr&auml;ge einsehen.</body></html>";
     exit;
   }
    else
   {
     ShowPDF($var);

     $fp = fopen("bestellung_" .$var[globalauftragid]. ".pdf", "r");

     header("Content-type: application/pdf");
     header("Content-disposition: filename=handypak-bestellung.pdf");
     passthru($fp);
    }
}
 else
{
    echo "<html><body>Sie d&uuml;rfen die PDF-Dateien nur im eingeloggten
          Zustand betrachten, und nur Ihre eigenen Auftr&auml;ge
          einsehen.</body></html>";
    exit;
}
?>
--------------------

Die functions.inc.php-Datei enthält *keine* Whitespaces. Überhaupt ist die  
functions.inc.php-Datei nur mit Funktionen gefüllt, der rest wird aufgrund  
der $htmloutput-Variable nicht ausgegeben (<body> und <head>-Tags).

Das interessante ist also, daß sobald ich session_start() auskommentiere  
und die benötigten Variablen hart einprogrammiere ($user[auth] = true),  
dann klappt alles.

Irgendwo fuscht dieses session_start() also anscheinend in den headern rum  
und verhindert die Möglichkeit, daß später im Script per passthru() meine  
PDF-Datei durchgeschleift wird. Liegt hier ein Fehler von mir vor? Ich bin  
jedenfalls auf die session-variable angewiesen, weil ja sonst jeder die  
PDF-Dateien von anderen einsehen kann...?

Bye,
Garvin.


php::bar PHP Wiki   -   Listenarchive