session / header / application problem
heiko
- php
0 Thomas Luethi0 heiko0 Thomas Luethi0 heiko0 Thomas Luethi0 heiko
hi,
ich habe folgendes problem:
der inhalt einer DB wird bei klick auf link in excel ausgegeben...
in der datei, die das macht, wird überprüft, ob der user berechtigt ist und dann geht es los...alles funktioniert prima unter http unter https leider nicht (datei nicht gefunden)
wenn ich nur das session_start stehenlasse und dieabfrage herausnehme funktioniert es auch nicht... wenn ich sessio_start auch weglasse funktioniert es >>also liegt es an dem session_start!?
gibt es ein problem session zu starten und danach zu sagen jetzt kommt ein ander anwendungs-typ als php?
PHP:--------------------------------------------------------------------------------
session_start();
if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
{
header("Location: ".$DOCUMENT_ROOT.$Home_URL."/index.php");
}
$fileName ="DB-Inhalt".date('dmy');
header("Content-Type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: base64\n");
header("Content-Disposition: attachment; filename="".$fileName.".xls"");
--------------------------------------------------------------------------------
wer hat eine idee das zu umgehen?
grüße und dank
Hallo,
alles funktioniert prima unter http unter https leider nicht (datei nicht gefunden)
header("Location: ".$DOCUMENT_ROOT.$Home_URL."/index.php");
RTFM.
http://www.php.net/manual/de/function.header.php
Dort steht ganz deutlich, dass gemaess HTTP/1.1 (RFC 2616)
die URL bei einem Location-Header absolut sein muss, also
inklusive Angabe des Schemas/Protokolls ("http://"
bzw. "https://").
Um festzustellen, ob HTTP oder HTTPS verwendet wird,
d.h. um den Anfang der URL zu kriegen, kannst Du
z.B. folgendes brauchen:
$protokoll=($_SERVER['HTTPS']=="on") ? "https" : "http";
Statt auf $DOCUMENT_ROOT solltest Du lieber auf
$_SERVER['DOCUMENT_ROOT'] zugreifen.
http://www.php.net/manual/de/reserved.variables.php#reserved.variables.server
Dann funktioniert das Skript auch, wenn
register_globals="off" ist.
Gruesse,
Thomas
Dort steht ganz deutlich, dass gemaess HTTP/1.1 (RFC 2616)
die URL bei einem Location-Header absolut sein muss, also
inklusive Angabe des Schemas/Protokolls ("http://"
bzw. "https://").
hallo thomas,
vielen dank für die Tipps!!!
hast du auch eine idee wieso der rest nicht funktioniert(also die excel-ausgabe)?
(die if-abfrage wird ja hoffentlich gar nicht gebraucht, wen jeder sich brav eingeloggt hat :-))
Hallo,
hast du auch eine idee wieso der rest nicht funktioniert(also die excel-ausgabe)?
Ich verstehe die Problembeschreibung nicht.
"Funktioniert nicht" zaehlt nicht. ;-)
Bitte beschreibe nochmal, was Du vorhast,
was das Skript in welchem Fall ausgeben soll
und was Du ggf. fuer Fehlermeldungen kriegst
bzw. mit dem Browser siehst/nicht siehst.
Was schickt das Skript denn als HTTP-Head?
W3C HTTP Head Service: http://cgi.w3.org/cgi-bin/headers
Gruesse,
Thomas
Hallo,
hast du auch eine idee wieso der rest nicht funktioniert(also die excel-ausgabe)?
Ich verstehe die Problembeschreibung nicht.
"Funktioniert nicht" zaehlt nicht. ;-)
ok ich versuch es etwas detailierter (hat ein wenig gedauert)...
in einem geschützten bereich kann man sich einloggen, um datenbankeinträge vorzunehmen(texte, kontakte etc. eingeben)
den login überprüfe ich auf allen seiten mit session variablen und wenn jemand nicht eingeloggt ist wird er zum start geschickt...
-------------
session_start();
if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
{
header("Location: https://".$DOCUMENT_ROOT.$Home_URL."/index.php");
}
-------------
außerdem kann man auch seine einträge in excel öffnen (sprich es werden alle einträge des users aus der db rausgeholt und in ein excel-sheet eingetragen)
dazu wird die export.php aufgerufen die so aussieht:
---------
<?
session_start();
if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
{
header("Location: https://".$DOCUMENT_ROOT.$Home_URL."/index.php");
}
$fileName ="DB-Inhalt".date('dmy');
header("Content-Type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: base64\n");
header("Content-Disposition: attachment; filename="".$fileName.".xls"");
?><html>.....
-----------
wie gesagt das ganze funktioniert unter http
(also es kommt ein pop-up mit Dateidownload "Einige Dateien..." Dateiname DB-Inhalt... ich klicke ok und die Datenbankdaten werden in einem excel-sheet angezeigt)
unter https hingegen popt das fenster auf: Dateidownload ..und jetzt steht dateiname: export.php also nicht mal die variable "$fileName" wird erkannt... wenn ich auf ok klicke kommt eine warnmeldung export.php konnte nicht gefunden werden entweder....
wenn ich nur das session_start stehenlasse und die if abfrage herausnehme funktioniert es auch nicht... wenn ich session_start auch weglasse funktioniert es >>also liegt es an dem session_start!?
Was schickt das Skript denn als HTTP-Head?
W3C HTTP Head Service: http://cgi.w3.org/cgi-bin/headers
302 Found
Content-Disposition: attachment; filename="DB-Inhalt 110304.xls"
X-Powered-By: PHP/4.3.4
Content-Transfer-Encoding: base64
Set-Cookie: PHPSESSID=b82fb0ee48b243d6603a5f0ce3a8e890; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Server: Apache/1.3.27 (Linux/SuSE) mod_python/2.7.8 Python/2.1.1 PHP/4.3.4 mod_perl/1.26 PHP-CGI/0.1b
Connection: close
Location: http://www.XXXXXXXXXXXXXXXXX/index.php
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Thu, 11 Mar 2004 16:53:58 GMT
Content-Type: application/vnd.ms-excel
200 OK
Date: Thu, 11 Mar 2004 16:53:58 GMT
Connection: close
X-Powered-By: PHP/4.3.4
Content-Type: text/html
Server: Apache/1.3.27 (Linux/SuSE) mod_python/2.7.8 Python/2.1.1 PHP/4.3.4 mod_perl/1.26 PHP-CGI/0.1b
Gruesse,
Thomas
auch nochmal beste grüße
Hallo,
Danke fuer die Beschreibung.
außerdem kann man auch seine einträge in excel öffnen (sprich es werden alle einträge des users aus der db rausgeholt und in ein excel-sheet eingetragen)
Was heisst das konkret?
Schreibst Du eine "physische" Datei und laesst
dann deren Inhalt durch die export.php "fliessen"?
Oder sendet das Skript export.php die Daten direkt?
In welchem Format? CSV?
dazu wird die export.php aufgerufen die so aussieht:
$fileName ="DB-Inhalt".date('dmy');
Kleiner Tip: Zwecks Sortierbarkeit u.s.w. wuerde
ich den Dateinamen eher in umgekehrter Reihenfolge
aufbauen: ymd oder Ymd.
header("Content-Type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: base64\n");
header("Content-Disposition: attachment; filename="".$fileName.".xls"");
?><html>.....
^^^^^
Was macht jetzt hier das <html>?
Schickst Du etwa eine HTML-Seite, nachdem Du gesagt hast,
jetzt kaeme eine Excel-Tabelle?
(Kann sein, dass das geht. Kenne die HTML-Faehigkeiten
von Excel nicht. ;-)
Was schickst Du alles, d.h. worin besteht die
eigentliche Ausgabe des Skripts?
(Die ersten paar Zeilen duerften uns zum Verstaendnis reichen).
unter https hingegen popt das fenster auf: Dateidownload ..und jetzt steht dateiname: export.php also nicht mal die variable "$fileName" wird erkannt... wenn ich auf ok klicke kommt eine warnmeldung export.php konnte nicht gefunden werden entweder....
Ich kenne mich mit dem MS IE leider nicht aus, kann also
nur mutmassen, warum er sich (aufgrund von Einstellungen)
bei HTTP und HTTPS unterschiedlich verhaelt, z.B. dass er
wenn ich nur das session_start stehenlasse und die if abfrage herausnehme funktioniert es auch nicht... wenn ich session_start auch weglasse funktioniert es >>also liegt es an dem session_start!?
Ich kann mir leider daraus keinen Reim machen.
Was schickt das Skript denn als HTTP-Head?
Ist der jetzt von dem Script, das die Ausgabe machen sollte,
das Du oben export.php genannt hast?
_Dessen_ HEAD waere interessant, und zwar, wenn es ueber
HTTPS abgerufen wird.
302 Found
Also eine Umleitung.
Dann duerften die darauf folgenden Content-Dingsbums Header
_dieses_ Skripts nicht mehr interessant/zutreffend sein, sondern
diejenigen des Skripts, auf das umgeleitet wird.
=> Ich vermute, Du solltest beim Fall, dass Du die Leute umleiten willst,
nach dem Umleitungs-header() ein exit; einbauen.
Steht uebrigens auch im Manual zu header()!
if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
{
header("Location: https://".$DOCUMENT_ROOT.$Home_URL."/index.php");
exit;
}
Ganz korrekt (nach HTTP/1.1) sollten uebrigens nach einem 30x-Head
noch ein paar Zeilen HTML mit einem klickbaren Link zur
neuen URL folgen.
In Opera kann man Umleitungen ausschalten, dann wird
ebendieses HTML dann angezeigt.
Der Content-Type einer Umleitung waere dann also text/html.
Content-Disposition: attachment; filename="DB-Inhalt 110304.xls"
Wo kommt dieser Leerschlag her? ---------------------> ^
Das folgende ist dann der Head der Seite, auf die
Umgeleitet wird:
200 OK
[...]
Content-Type: text/html
Server: Apache/1.3.27 (Linux/SuSE) mod_python/2.7.8 Python/2.1.1 PHP/4.3.4 mod_perl/1.26 PHP-CGI/0.1b
So, ich muss auf den Weg.
Heute hoerst Du nicht mehr von mir. Morgen wieder.
Hoffe, Du kommst weiter.
Ach ja, das Tool von Schroeppl ist auch ganz praktisch.
Damit kannst Du nicht nur den HEAD, sondern (wenn Du
GET waehlst) auch die ersten paar Zeilen der eigentlichen
Ausgabe des Skripts sehen.
http://www.schroepl.net/cgi-bin/http_trace.pl
HTH, mfg + gute Nacht
Thomas
Hallo,
Danke fuer die Beschreibung.
außerdem kann man auch seine einträge in excel öffnen (sprich es werden alle einträge des users aus der db rausgeholt und in ein excel-sheet eingetragen)
Was heisst das konkret?
Schreibst Du eine "physische" Datei und laesst
dann deren Inhalt durch die export.php "fliessen"?
Oder sendet das Skript export.php die Daten direkt?
hm.. also das export.php bekommt ja folgenden header mitgeteilt
header("Content-Type: application/vnd.ms-excel");
der inhalt ist dann im prinzip eine html tabelle die durch php gefüllt wird
In welchem Format? CSV?
also html
dazu wird die export.php aufgerufen die so aussieht:
$fileName ="DB-Inhalt".date('dmy');
Kleiner Tip: Zwecks Sortierbarkeit u.s.w. wuerde
ich den Dateinamen eher in umgekehrter Reihenfolge
aufbauen: ymd oder Ymd.
ok, danke!
header("Content-Type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: base64\n");
header("Content-Disposition: attachment; filename="".$fileName.".xls"");
?><html>.....
^^^^^
Was macht jetzt hier das <html>?
Schickst Du etwa eine HTML-Seite, nachdem Du gesagt hast,
jetzt kaeme eine Excel-Tabelle?
(Kann sein, dass das geht. Kenne die HTML-Faehigkeiten
von Excel nicht. ;-)
das klappt prima!
Was schickst Du alles, d.h. worin besteht die
eigentliche Ausgabe des Skripts?
(Die ersten paar Zeilen duerften uns zum Verstaendnis reichen).
wie gesagt dass ist im pur html...
<html><head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 10">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
....
excel-style und weiterer müll
....
</head>
<body><table border=1 cellpadding=2 cellspacing=0 bordercolor='#000000'><tr bgcolor='#FFCC00'>
<td> </td>
....
unter https hingegen popt das fenster auf: Dateidownload ..und jetzt steht dateiname: export.php also nicht mal die variable "$fileName" wird erkannt... wenn ich auf ok klicke kommt eine warnmeldung export.php konnte nicht gefunden werden entweder....
Ich kenne mich mit dem MS IE leider nicht aus, kann also
nur mutmassen, warum er sich (aufgrund von Einstellungen)
bei HTTP und HTTPS unterschiedlich verhaelt, z.B. dass er
- keine Cookies akzeptiert,
- keine 302-Weiterleitungen ausfuehrt
- auf Vorschlaege (Content-... Header) anders/nicht reagiert
Was weiss ich...wenn ich nur das session_start stehenlasse und die if abfrage herausnehme funktioniert es auch nicht... wenn ich session_start auch weglasse funktioniert es >>also liegt es an dem session_start!?
Ich kann mir leider daraus keinen Reim machen.
Was schickt das Skript denn als HTTP-Head?
Ist der jetzt von dem Script, das die Ausgabe machen sollte,
das Du oben export.php genannt hast?
ich habe den beginn des scriptes kopiert...da ich bei dem tool doch keine usernamen und pw mit übergeben kann ...?!
jetzt aber im https verzeichnis:
An error occured I/O error: http error no host given
302 Found
X-Powered-By: PHP/4.3.4
Set-Cookie: PHPSESSID=4b2fcc15ef6d77511874a70321f3d968; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Server: Apache/1.3.27 (Linux/SuSE) mod_python/2.7.8 Python/2.1.1 PHP/4.3.4 mod_perl/1.26 PHP-CGI/0.1b
Connection: close
Location: http:///www/webXXX/html/XXX/index.php
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Fri, 12 Mar 2004 08:51:35 GMT
Content-Type: text/html
_Dessen_ HEAD waere interessant, und zwar, wenn es ueber
HTTPS abgerufen wird.302 Found
Also eine Umleitung.
ja...aber nur weil ich doch die user-angaben nicht mit übergeben kann!!??? jetzt habe ich die if abfrage auskommentiert...
200 OK
Content-Disposition: attachment; filename="EMEA Forecast 120304.xls"
X-Powered-By: PHP/4.3.4
Content-Transfer-Encoding: base64
Set-Cookie: PHPSESSID=844898699e226697301e7429efe769ff; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Server: Apache/1.3.27 (Linux/SuSE) mod_python/2.7.8 Python/2.1.1 PHP/4.3.4 mod_perl/1.26 PHP-CGI/0.1b
Connection: close
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date: Fri, 12 Mar 2004 08:53:49 GMT
Content-Type: application/vnd.ms-excel
Dann duerften die darauf folgenden Content-Dingsbums Header
_dieses_ Skripts nicht mehr interessant/zutreffend sein, sondern
diejenigen des Skripts, auf das umgeleitet wird.=> Ich vermute, Du solltest beim Fall, dass Du die Leute umleiten willst,
nach dem Umleitungs-header() ein exit; einbauen.
Steht uebrigens auch im Manual zu header()!if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
{
header("Location: https://".$DOCUMENT_ROOT.$Home_URL."/index.php");
exit;
}Ganz korrekt (nach HTTP/1.1) sollten uebrigens nach einem 30x-Head
noch ein paar Zeilen HTML mit einem klickbaren Link zur
neuen URL folgen.
In Opera kann man Umleitungen ausschalten, dann wird
ebendieses HTML dann angezeigt.
aber doch nur client seitig?! über header läuft das doch schon auf dem server ab, oder?!
Der Content-Type einer Umleitung waere dann also text/html.
Content-Disposition: attachment; filename="DB-Inhalt 110304.xls"
Wo kommt dieser Leerschlag her? ---------------------> ^Das folgende ist dann der Head der Seite, auf die
Umgeleitet wird:200 OK
[...]
Content-Type: text/html
Server: Apache/1.3.27 (Linux/SuSE) mod_python/2.7.8 Python/2.1.1 PHP/4.3.4 mod_perl/1.26 PHP-CGI/0.1bSo, ich muss auf den Weg.
Heute hoerst Du nicht mehr von mir. Morgen wieder.
Hoffe, Du kommst weiter.Ach ja, das Tool von Schroeppl ist auch ganz praktisch.
Damit kannst Du nicht nur den HEAD, sondern (wenn Du
GET waehlst) auch die ersten paar Zeilen der eigentlichen
Ausgabe des Skripts sehen.
http://www.schroepl.net/cgi-bin/http_trace.plHTH, mfg + gute Nacht
Thomas
hast du vielleicht ne idee für nen ganz anderen ansatz?
inhalt in eine temp. variable schreiben per header neue seite aufrufen, die die variable ausgibt und löscht?
mir geht es darum dass die ausgabe nur von dem korrekt eingeloggten user vorgenommen werden kann...also ein anderer user nicht einfach export.php eingeben kann und ein ergenis bekommt..deshalb brauche ich die session_start...
ohne session_start und if abfrage funzt es ja prima auch bei https...
grüße und 1000 dank
heiko
Hallo Heiko,
So, da bin ich wieder;-)
Schickst Du etwa eine HTML-Seite, nachdem Du gesagt hast,
jetzt kaeme eine Excel-Tabelle?das klappt prima!
OK, alles klar.
Du schickst also aehnliches Moechtegern-HTML, wie es Excel produziert,
wenn man auf "Datei -> Speichern unter" geht und dann "HTML" als
Export-Format waehlt, und Excel oeffnet dieses Dokument.
ich habe den beginn des scriptes kopiert...da ich bei dem tool doch keine usernamen und pw mit übergeben kann ...?!
Du koenntest ggf. die Session-ID eines erfolgreich "eingeloggten" Benutzers
als URL-Parameter mitgeben.
(Kommt auf die PHP-Konfiguration an, Stichwort session.use_only_cookies)
Probier es zuerst mal selbst:
https://www.example.com/.../export.php?PHPSESSID=xyz123abc456
Die Session-ID kannst Du Dir ja von einem Script anzeigen lassen,
sobald Du eingeloggt bist. Oder Du schaust halt in den Cookies nach,
falls Du weisst oder herausfindest, wie das beim MS IE geht...
An error occured I/O error: http error no host given
Diese Meldung sagt mir leider nichts.
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Ich nehme mal an, dass Du fuer diese Angaben verantwortlich bist.
Mein Apache/PHP schickt keinen solchen Kram...
Versuch mal, sie wegzulassen.
200 OK
Content-Disposition: attachment; filename="EMEA Forecast 120304.xls"
Auch hier hast Du wieder Leerzeichen im Dateinamen.
Spielt vielleicht auch eine Rolle...
=> Ich vermute, Du solltest beim Fall, dass Du die Leute umleiten willst,
nach dem Umleitungs-header() ein exit; einbauen.
Steht uebrigens auch im Manual zu header()!if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
{
header("Location: https://".$DOCUMENT_ROOT.$Home_URL."/index.php");
exit;
}
Erst, als ich offline und unterwegs war, kam mir folgendes in den Sinn:
Ganz sauber waere eigentlich, das ganze mit if/else zu machen:
if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
{
header("Location: https://".$DOCUMENT_ROOT.$Home_URL."/index.php");
/* Plus ggf. ein paar Zeilen HTML mit einem Link, siehe unten */
}
else
{
/* Eigentliche Ausgabe */
}
Ich weiss, dass der dclp-FAQ-Artikel "Waechter"
http://www.dclp-faq.de/q/q-stil-waechter.html
Deinen Schreibstil propagiert.
Aber eben, wenn Du hier mit if/else arbeitest, und
nicht mit nur mit if und exit, dann ist schonmal ganz
eindeutig, welcher Fall zutrifft.
Ganz korrekt (nach HTTP/1.1) sollten uebrigens nach einem 30x-Head
noch ein paar Zeilen HTML mit einem klickbaren Link zur
neuen URL folgen.
In Opera kann man Umleitungen ausschalten, dann wird
ebendieses HTML dann angezeigt.aber doch nur client seitig?! über header läuft das doch schon auf dem server ab, oder?!
Ja, klar. Aber es erhoeht die Stabilitaet und Standard-Konformitaet,
wenn Du Dich bezueglich "302 Found" an RFC 2616 haeltst:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3
"Unless the request method was HEAD, the entity of the
response SHOULD contain a short hypertext note with
a hyperlink to the new URI(s)."
Ich wuerde es etwa so machen:
if (/* nicht eingeloggt/berechtigt */)
{
$zielurl="https://...";
header("Location: $zielurl");
echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n";
echo "<title>Umleitung</title>\n";
echo "<p>Umleitung: <a href='$zielurl'>Zur Loginseite</a>";
}
else
{ /* eigentliche Ausgabe */ }
hast du vielleicht ne idee für nen ganz anderen ansatz?
Ich wuerde versuchen, das Problem einzukreisen.
Es scheint ja primaer etwas mit Sessions sowie mit
dem Unterschied HTTPS/HTTP zu tun zu haben.
Ich wuerde also mal als eigentliche Ausgabe
etwas ganz einfaches nehmen, nicht gleich ein
Excel-HTML-Dokument, sondern nur etwas Plain-Text:
if (/* nicht eingeloggt/berechtigt */)
{
header("Location: $zielurl");
/* u.s.w. */
}
else
{ echo "Alles OK, Sie duerften die Daten sehen!"; }
Auch die Bedingung solltest Du nochmals ueberpruefen.
if ($_SESSION['Login'] != "true" OR !$_SESSION['Login'] OR $_SESSION["Master"] != 1)
Ist das wirklich das, was Du willst?
Ich vermute, Du willst die Leute zulassen, die Login==true und Master==1 haben.
Das koennte man z.B., wenn man etwas faul ist, so schreiben:
if ($_SESSION['Login']=="true" AND $_SESSION["Master"]==1)
{ /* Eigentliche Ausgabe */ }
else
{ /* Umleitung zur Login-Seite */ }
Oder, wenn man die Umleitung als erstes (im IF-Teil) will,
mit Negation der Bedingung:
if (!($_SESSION['Login']=="true" AND $_SESSION["Master"]==1))
{ /* Umleitung zur Login-Seite */ }
else
{ /* Eigentliche Ausgabe */ }
Weil man dabei aber nicht prueft, ob die Variablen bzw. Schluessel
ueberhaupt existieren, bevor man ihren Wert anschaut, ist diese
Schreibweise nicht ganz korrekt.
Bei scharf eingestellter Fehlerbehandlung gibt es so z.B. die Meldung
Notice: Undefined index Login
wenn $_SESSION['Login'] nicht definiert ist.
Um ganz sauber zu sein, sollte man deshalb schreiben:
if (!(isset($_SESSION['Login']) AND isset($_SESSION['Master']) AND $_SESSION['Login']=="true" AND $_SESSION["Master"]==1))
{ /* Umleitung zur Login-Seite */ }
else
{ /* Eigentliche Ausgabe */ }
Ein weiterer Punkt, den Du recherchieren bzw. ausprobieren
koenntest, ist die Reihenfolge der verschiedenen HTTP-Content-Header,
mit denen Du ja das Browserverhalten beeinflussen moechtest.
Ich habe nur eine schwache Erinnerung, dass diese Reihenfolge
evtl. beim MS IE eine Rolle spielt.
Vielleicht findest Du dazu mehr...
inhalt in eine temp. variable schreiben per header neue seite aufrufen, die die variable ausgibt und löscht?
Ich glaube nicht, dass das etwas bringen wuerde.
Es ist egal, woher das Skript die Daten hat, die es ausgibt.
ohne session_start und if abfrage funzt es ja prima auch bei https...
Daraus werde ich noch immer nicht schlau.
Findet denn alles unter HTTPS statt?
Also auch das Einloggen u.s.w.?
Browser unterscheiden evtl. auch bezueglich Cookies u.s.w.
zwischen https://www.example.com und http://www.example.com
---
Du hast AFAIK noch gar nicht erwaehnt, welchen Browser
Du verwendest.
Falls es der MS IE ist - was ich irgendwie immer annahm - dann
koenntest Du ja auch mal die Optionen durchforsten und schauen,
ob es etwas aendert, wenn Du die Domain bzw. URL zu den
"vertrauenswuerdigen" Seiten (oder wie das heisst) hinzufuegst.
Sorry, irgendwie bin ich mit der ganzen Geschichte am Ende
meines Lateins...
Gruesse,
Thomas