Cookies und Subdomain

G.P.

Legendäres Mitglied
Wenn sich ein User auf meiner Seite xzy.de einloggt, wird ein Cookie mit den Userinformationen gesetzt.

Ist es irgendwie möglich, dass wenn der User auf die Subdomain 123.xzy.de wechselt, dieses Cookie immer noch ausgelesen werden kann?
Bzw. wie kann ich es lösen, dass ein User sowohl auf der Haupt- wie auch auf der Subdomain eingeloggt bleibt.

MfG
GP
 
In .NET geht das mit etwas in der folgenden Form:

QUOTE Dim _sC As New HttpCookie(str_Cookie_Name, id)
_sC.Domain = "server-daten.de"


Sprich: Der Zugriff erfolgt von einer Subdomain (www ist ja auch eine), als Domain wird normalerweise der gesamte Domainname (also www.domain.de oder crm.domain.de) genutzt.

Überschreibt man die Domaineigenschaft (es wird ein analoges Objekt wie HttpCookie geben), dann schicken Browser das Cookie an die verschiedenen Subdomains mit.


Ich bin allerdings nicht mehr so ganz auf dem laufenden, wie das als rohes Headerelement aussehen muß. Das wäre der Weg, wenn man kein gekapseltes Objekt hat.
 
Als Domain für den Cookie musst du dann folgenes eintragen:

CODE .xzy.de


Siehe hier


QUOTE An explicitly specified domain must always start with a dot.
 
Ich hab es mit folgenden PHP Code probiert, leider klappt es nicht:
CODE setcookie('name','content',time()+6000,'/','.xyz.de');

Hat jemand eine Idee was man da machen kann?
 
QUOTE (G.P. @ Do 16.07.2009, 17:43)
CODE setcookie('name','content',time()+6000,'/','.xyz.de');


Ich rate mal (nutze ja sonst kein PHP):

- Der time() + 6000 wird irgendwie falsch. Setze dort mal 0 oder eine große Integer-Zahl rein.
- Lass den ersten Punkt bei .xyz.de weg. In .NET braucht man das nicht.
- Du setzt das Cookie zu spät. Es darf noch keinen Output geben, auch keinen WhiteSpace.
 
QUOTE (Jürgen Auer @ Do 16.07.2009, 18:55)
QUOTE (G.P. @ Do 16.07.2009, 17:43)
CODE setcookie('name','content',time()+6000,'/','.xyz.de');


Ich rate mal (nutze ja sonst kein PHP):

- Der time() + 6000 wird irgendwie falsch. Setze dort mal 0 oder eine große Integer-Zahl rein.
- Lass den ersten Punkt bei .xyz.de weg. In .NET braucht man das nicht.
- Du setzt das Cookie zu spät. Es darf noch keinen Output geben, auch keinen WhiteSpace.


CODE
$ts =time();
$tsloglife=$ts+(60*60*24*80);

setcookie( "nick", $nick , $tsloglife, "/", ".$REQUEST_HOST" );


$tsloglife = angabe bis wann (UnixTimestamp) der Cookie gilt, quasie ein "Keks-Mindesthaltbarkeitsdatum"

time()+6000 ist also OK

Der Punk vor dem "Domain" ist auch richtig


Punkt 3 ... Du setzt das Cookie zu spät.
Ich denke, Er liest ihn zu früh ....
... jetzt Cookie setzen und gleich $_COOKIE auslesen, das geht nicht ...
... $COOKIE ist erst einen Pageview später da

setcookie sendet den Keks zum Host
$_COOKIE liefert das zurück .... beim nächsten PageView



//EDIT
Ein Zeitstempel <= "Jetzt" macht den Cookie ungültig
also, eine "0" reinschreiben, löscht den Cookie

mal ganz blöd gefragt ... deine Uhr auf deinem Rechner geht richtig ...
6000 Sekunden = 10 Stunden ... geht deine Uhr 10 Stunden ... ähm, Vor oder nach, dann ... ist er schon schlecht wenn er zurückkommt (sagt dann dein Browser)
 
Der Cookie wird schon richtig gesetzt und wenn ich die Seite neu lade auch erkannt. Wenn ich die gleiche Adresse aber mit Subdomain (in diesem Fall www) noch einmal aufrufe, wird der Cookie nicht mehr erkannt und es wird ein zweiter gesetzt.
 
QUOTE (G.P. @ Fr 17.07.2009, 20:01)Der Cookie wird schon richtig gesetzt und wenn ich die Seite neu lade auch erkannt. Wenn ich die gleiche Adresse aber mit Subdomain (in diesem Fall www) noch einmal aufrufe, wird der Cookie nicht mehr erkannt und es wird ein zweiter gesetzt.

Problemeingrenzung:

(1) Ist es ein Browserproblem?

(2) Wie sieht der Cookie im FireFox aus, wenn man sich da die Details ansieht? Welche Domain ist dort zugeordnet?

(3) Wird (müßte sich per Http-Header überprüfen lassen) der Cookie vom Browser an die Subdomain zurückgeschickt? Falls ja, ist es dort ein Zuordnungsproblem, falls nein, dürfte die Definition vom Browser her nicht erkannt werden.


Url?
 
Zurück
Oben