Anmelden bei einer Site Ich arbeite an Funktionen wie erwartet auf meinem lokalen Computer, scheitert jedoch auf dem Remote-Server NUR in Internet Explorer. Der Kicker ist, dass es lokal in IE funktioniert, nur nicht auf dem Remote-Rechner.Sitzungsvariablen werden nicht festgelegt, aber nur in Internet Explorer und nicht auf allen Computern
Was in der Welt könnte das verursachen? Ich bin durch den Code auf dem Remote-Computer gegangen und kann sehen, dass die eingegebenen Login-Werte in der Datenbank überprüft werden, sie werden gefunden und dann wird eine Login-Funktion aufgerufen. Dies setzt zwei $ _SESSION-Variablen und leitet auf die Haupt-Admin-Seite um. Aber nur im IE (und nicht, wenn es auf dem lokalen Rechner läuft ... das ist der Schlüssel) sind die $ _SESSION-Variablen nicht vorhanden, wenn Sie auf die Haupt-Admin-Seite gelangen. var_dump($_SESSION)
gibt mir, was ich in jedem Browser erwarte, wenn ich dies in meiner lokalen Umgebung und in jedem Browser außer IE 6, 7 und 8 bei der Ausführung auf dem Remote-Server (wo ich einen Nullwert als ob nichts für $ festgelegt wurde) _SESSION).
Das hat mich wirklich ratlos, so dass jeder Ratschlag geschätzt wird.
Ein Beispiel ... in IE, lokal ausführen, var_dump gibt mir:
array
'Username' => string 'theusername' length=11
'UserID' => string 'somevalue' length=9
Run auf dem Remote-Server (nur IE ... funktioniert in anderen Browsern) Var_dump gibt mir:
array(0){}
-Code (ein minimales Beispiel ... wenn wirklich ein Codebeispiel ist nicht mit diesem Thema erforderlich):
$User = GetUser($Username, $Password);
if ($User->UserID <> "") { // this works so we call Login()...
Login($User); // this also works and gives expected results. on to redirect...
header("Location: index.php"); // a var_dump at index.php shows that there is no session data at all in IE, remotely.
} else {
header("Location: login.php");
}
function Login($data) {
$_SESSION['Username'] = $data->Username;
$_SESSION['UserID'] = $data->UserID;
// a var dump here gives the expected data in every browser
}
EDIT: Gelöst dies. Es war die Tatsache, dass der Domänenname auf dem Testserver einen Unterstrich enthielt. Keine Ahnung warum und momentan keine Zeit für Google, aber der Unterstrich, so etwas wie some_client.ourcompany.com genannt, war das Problem. Ich muss den Internet Explorer lieben ... es ist wie ein passiv aggressiver Kollege, dem man einfach nicht ausweichen kann.
Codebeispiel für uns zu betrachten? –
Haben Sie 'session_start();' oben auf jeder Seite eingefügt? – Alec
Haben Sie session_start() eingeschlossen? oben auf jeder Seite? Ja. – Stuart