PHP Session (Cokie) Problem beim aufruf über eine Subdomain
-
Ich verstehe ja auch nicht so ganz was da passiert. Die ganz normale Domain, also die Topdomain, verweist auf den obersten html ordner, dieser enthält natürlich eine index.php und so weiter. Nun habe ich aber in diesem html Ordner noch Unterordner die weniger mit der Website html/index.php zu tun hatt. Also eigentlich ganz andere Websites. Damit aber nicht umständlich über den Topdomain und /Unterverzeichnis die im Unterordner liegende website (index.php) aufrufen muss, kann man ja eine Subdomain verwenden, die direkt auf die Website verweist die in dem Unterordner ist.
Und in diesem Unterordner habe ich jetzt eine Website, die u.a. auch Cokies erstellt. Die Cokies enthalten als Host '.Topdomain.Länderendung' und als Pfad '/'.
Sobald er solch ein Cokie erstellt hat, ist das Script der Meinung, dass das nicht sein Cokie sei oder ich weiss nicht warum.
-
Hallo,
ich vermute schon fast dass das Problem gar nicht in der (Sub-)Domain oder dem Verzeichnis liegt.
Lies dich hier mal durch und schau ob du nicht irgendeinen anderen Fehler hast.
VlG
-
RandomAccess85 schrieb:
Hallo,
ich vermute schon fast dass das Problem gar nicht in der (Sub-)Domain oder dem Verzeichnis liegt.
Lies dich hier mal durch und schau ob du nicht irgendeinen anderen Fehler hast.
VlG
Also hat mich leider auch nicht weitergebracht, da ich das dort beschriebene bereits weis. Das bei einer Variablen-Ausagbe per Echo, der voher keinen Wert zugewiesen wurde, nichts raus kommt ist klar. Genauo so ist mir klar das in einem Cokie eigentlich wiederum auch nur Variablen mit dem jeweiligen zuweisungswert sind. Die fähigkeit logisch mechanisch zu denken habe ich schon. Nur leider kennt man eben in der IT-Welt nicht alle notwendigen Fakten, um es korrekt sich um Kopf theoretisch durchgehen zu lassen. Wer kennt auch schon das Hintergrundwissen eines Webservers, oder des PHP Interpreters? Ich denke bei mir liegt vielmehr das Problem, das ich nicht weiss wie mein Webserver arbeitet. Ich kann zwar die PHP-Settings Inforamtionen auslesen aber sor richtig schlau werde ich daraus auch nicht.
Ich bin mir zu fast 90% sicher, das irgenwie duch die verwendung eines Subdomain, der Cokie anders erstellt wird, als er soll. Folglich fält der Cokie bei einer IF oder ähnlichen Prüfung im Script durch und das Script beginnt wieder die Funktion aufzurufen ein Cokie zu erstellen, dieses wird aber wieder anders als es eigentlich sollte, damit geht das Spiel wieder von vorne los. Ich bin mir ziemlich sicher, dass das Script im Moment der Cokie erstellung in der Umgebungsvariable eine andere Adresse enthält, als im Moment der Cokie-Exiztens überprüfung. Folglich ist der Wert nicht gleich, foglich, sieht das Script, dass es nicht sein Script ist (ironisch gemeint) und sagt sich der hat noch kein Cokie und deshalb erstellen wir jetzt eins, also die Funktion aufrufen die ein Cokie erstellt.
Das einzige was ich noch nicht wusste ist das man keine Ausagbe vor einem setcokie machen darf.
-
Vllt machst du endlich mal das beispiel zu dem du aufgefordert wurdest.
Oder noch besser, zeig gleich die stelle wie sie in echt ist.
Dann kann man dir vllt Helfen.Wir sitzen auch nur vor einem PC und nicht vor einer Glaskugel.
Du musst schon code zeigen, damit wir dir sagen können wo der fehler ist.
-
html
html/index.php
html/InterAnonymChat
html/InterAnonymChat/index.php
html/InterAnonymChat/Chat
html/InterAnonymChat/Chat/index.phpwww.Domain.com = html/index.php
www.Subdomain.Domain.com = html/InterAnonymChat/index.php
index.php from www.Subdomain.Domain.com enthält ein iFrame src="Chat" (ladet Chat/index.php in den iFrame)function startSession() { $this->setConfig('sessionCookiePath', null, '/'); $this->setConfig('sessionCookieDomain', null, 'Topdomain.com'); if(!session_id()) { // Set the session name: session_name($this->getConfig('sessionName')); // Set session cookie parameters: session_set_cookie_params( 0, // The session is destroyed on logout anyway, so no use to set this $this->getConfig('sessionCookiePath'), $this->getConfig('sessionCookieDomain'), $this->getConfig('sessionCookieSecure') ); // Start the session: session_start(); // We started a new session: $this->_sessionNew = true; } } function destroySession() { if($this->_sessionNew) { // Delete all session variables: $_SESSION = array(); // Delete the session cookie: if (isset($_COOKIE[session_name()])) { setcookie( session_name(), '', time()-42000, $this->getConfig('sessionCookiePath'), $this->getConfig('sessionCookieDomain'), $this->getConfig('sessionCookieSecure') ); } // Destroy the session: session_destroy(); } else { // Unset all session variables starting with the sessionKeyPrefix: foreach($_SESSION as $key=>$value) { if(strpos($key, $this->getConfig('sessionKeyPrefix')) === 0) { unset($_SESSION[$key]); } } } }
Website: Topdomain.com Cokie-Name: ajax_chat_style Name: ajax_chat_style Inhalt: prosilver Domain: .Topdomain.com Pfad: / Senden für: Jeden Verbindungstyp Gültig bis: Donnerstag, 16. Juni 2011 16:49:58
Website: Topdomain.com Cokie-Name: ajax_chat_settings Name: ajax_chat_settings Inhalt: bbCode%3Dtrue%26bbCodeImages%3Dtrue%26bbCodeColors%3Dtrue%26hyperLinks%3Dtrue%26lineBreaks%3Dtrue%26emoticons%3Dtrue%26autoFocus%3Dtrue%26autoScroll%3Dtrue%26maxMessages%3D0%26wordWrap%3Dtrue%26maxWordLength%3D32%26dateFormat%3D(%2525H%253A%2525i%253A%2525s)%26persistFontColor%3Dfalse%26fontColor%3Dnull%26audio%3Dtrue%26audioVolume%3D1%26soundReceive%3Dsound_1%26soundSend%3Dsound_2%26soundEnter%3Dsound_3%26soundLeave%3Dsound_4%26soundChatBot%3Dsound_5%26soundError%3Dsound_6%26blink%3Dtrue%26blinkInterval%3D500%26blinkIntervalNumber%3D10 Domain: .Topdomain.com Pfad: / Senden für: Jeden Verbindungstyp Gültig bis: Donnerstag, 16. Juni 2011 16:49:58
-
Bemueh dich bitte etwas mehr den relevanten Code herzuzeigen. Du zeigst zB 2 Cookies wovon nur eins im Code gesetzt wird und wir nicht wissen welches.
destroySession ist eigentlich uninteressant, oder rufst du es irgendwann in dem relevanten Code auf? Wenn ja: warum? Und warum unterscheidest du zwischen einer neuen und einer "alten" Session?
Relevante Info:
wie wird das Cookie gesetzt dass du vermisst? Wie sehen die Daten aus die der Client bekommt und ueber welche URL wird es denn gesetzt.Was fuer Daten werden an die subdomain URL geschickt? (vom Client).
Ich sehe zB auch keine UID oder aehnliches die gesetzt wird. Also versuch dir zu ueberlegen was wir fuer infos brauchen und poste die dann...
-
function getXMLMessages() { switch($this->getView()) { case 'chat': return $this->getChatViewXMLMessages(); case 'teaser': return $this->getTeaserViewXMLMessages(); case 'logs': return $this->getLogsViewXMLMessages(); default: return $this->getLogoutXMLMessage(); } }
Das Feld aus dem Array, das per getView() abgerufen wird enthält nichts.
-
Hallo,
ich glaube langsam, du hast gar keine Ahnung was du da machst. Du solltest dich vielleicht erst mit grundlegenderen Dingen beschäftigen, bevor du anfängst irgendwelche AJAX-Chats zusammen zu klicken.
Wieso ich das behaupte?
=> Der gezeigte Code trägt nicht im Ansatz zum Cookie-Problem bei und wird wohl auch nicht die Ursache des Problems sein.VlG
-
RandomAccess85 schrieb:
Hallo,
ich glaube langsam, du hast gar keine Ahnung was du da machst. Du solltest dich vielleicht erst mit grundlegenderen Dingen beschäftigen, bevor du anfängst irgendwelche AJAX-Chats zusammen zu klicken.
Wieso ich das behaupte?
=> Der gezeigte Code trägt nicht im Ansatz zum Cookie-Problem bei und wird wohl auch nicht die Ursache des Problems sein.VlG
NOOB! Die Function getLogoutXMLMessage() wird aufgerufen. Es folgt die Logout Site.
-
LiGERWooD schrieb:
NOOB!
Wieso wundert mich das nicht.
Mach' deine Hausaufgaben und überlege dir, ob dir so nochmal jemand hier helfen wird oder nicht.