[PHP] Komisches Verhalten des MSIE bei der Überprüfung der Konstante SID

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
Hallo!

Der Internet Explorer verhält sich mal wieder sehr mysteriös.

PHP:
// Nehme notwendige Änderungen an den PHP-Konfigurationsdaten vor
ini_set('session.use_cookies', '1');
ini_set('session.use_only_cookies', '1');
ini_set('session.use_trans_sid', '0');


session_start();
if (SID != "")
{
    die("Bitte stellen Sie zu Ihrer eigenen Sicherheit Ihren Browser so ein, dass er (Session-)Cookies akzeptiert.");
}

Im Firefox ist alles kein Problem, der MSIE (und auch der Opera) verhält sich folgendermaßen:
Wenn man die entsprechende Seite zum ersten Mal aufruft, dann wird komischerweise "Bitte stellen Sie zu Ihrer eigenen Sicherheit Ihren Browser so ein, dass er (Session-)Cookies akzeptiert." angezeigt, obwohl Cookies vom Browser akzeptiert werden. Das Sonderbare: Wenn man auf F5 drückt oder auch die Seite wechselt und später wieder drauf geht, dann wird sie normal angezeigt!? Die Konstante SID müsste doch eigentlich zu jedem Zeitpunkt leer sein. Wie lässt sich das Problem beheben?
 
Zuletzt bearbeitet:
wo deklarierst du die Variabel SID? Wenn die Variable nie deklariert wird bzw. gefüllt wird, so müsste bei jedem Browser die Meldung erscheinen..
 
Nein. Ihren Wert bekommt die Konstante automatisch zugewiesen, wenn die Session-ID nicht in einem Cookie gespeichert werden kann.
 
Zuletzt bearbeitet:
ich kann nur vermuten woran es liegt....ich hatte ein ähnliches Verhalten bei einem PHP Projekt gehabt.

Bei mir lag das Problem, dass die Variable, bei dir SID, noch nicht geladen wurde...obwohl sie eindeutig vorher geladen wurde.

Versuch mal bitte folgendes: Erstelle eine PHP Datei, quasi eine Einstiegsdatei, in der du die Session startest. In dieser Datei machst du dann ansonsten nichts, nur eine Weiterleitung auf die Datei, bei der die Variable SID überprüft wird.

So könntest du wenigstens rausbekommen ob es am Script liegt oder aber dem Browser


Gruß SirTwist
 
komisch, jetzt gehts auch im FF nicht...
also beim ersten mal ist in der konstante noch ein string gespeichert ("PHPSESSID=blablabla"). wieso? die cookie einstellungen sind doch immer gleich? was sucht da die angabe in der konstante?
und wie kann ich das problem umgehen bzw. das auf anderem weg überpfüfen?
 
poste mal einwenig mehr Quellcode. Z.B. wie die Variable SID gefüllt wird. dann könnte man vielleicht mehr sagen!
 
Es gibt nicht mehr Quelltext - dass heißt, klar gibt es mehr Quelltext, aber keinen, der für das Problem irgendeine Relevanz hätte. Ich weise der Konstante (keine Variable, wie du immer schreibst) SID nirgends einen Wert zu. Das sollte eigentlich alles automatisch geschehen. Ließ dir am besten dazu erst einmal den Abschnitt im PHP Handbuch über Sessions durch. Dort steht unter anderem auch Folgendes:

PHP Handbuch schrieb:
Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

SID (string)
Konstante, die entweder den Namen und die ID der Session in der Form "name=ID" enthält oder eine leere Zeichenkette, falls die Session-ID in einem entsprechenden Cookie gesetzt wurde.

Also wollte ich mit if (SID != "") prüfen, ob Session-Cookies akzeptiert werden oder nicht.
Wieso funktioniert das so also nicht und vor allem: Wieso funktioniert es nur beim ersten Mal nicht und danach schon!?
 
Beim ersten Mal ist SID noch nicht übergeben. Wenn du erneut draufgehst schon. Ich denk mal die Konstante bekommt den Wert nur beim laden des Scripts und da die seesionID erst im Script entsteht ist die Konstante noch nicht gefüllt.
Hoffe das stimmt so.

mfg
 
Ich dachte mir das so:

1. session_start() startet eine neue Session und erstellt ein Session-Cookie

2. Erst danach wird SID überprüft. da im schritt vorher bereits die ID in einem Cookie gespeichert wurde, müsste die Konstante leer sein.

aber okay.. hättest du ne andere idee zu überprüfen, ob session-cookies akzeptiert werden?
 
Zurück
Oben