PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : $_SESSION nicht vorhanden


JansonChristian
28.11.2004, 18:35:53
Hi,

setze auf meiner homepage beim login sessions, z.B.: $_SESSION['user_id']

Habe meine homepage mit subdomains aufgebaut.

Jetzt mein problem:
Wenn ich auf der hauptdomain sessions setzte und dann mit einem link auf eine subdomain gehe, gehen die sessions verloren.

Mach ich irgendetwas falsch oder ist das normal?

chris17
29.11.2004, 00:15:46
Hi,

auf jeder Seite muss am Beginn session_start() stehen.

Grüße

JansonChristian
29.11.2004, 15:33:12
Es sthet auf jeder seite, es ist sogar die selbe seite, hab sie einfach nur kopiert, den es ist die start seite.

bazubi
29.11.2004, 15:40:02
Das verhalten ist normal. Wenn Du die Domain wechselts sperrt jeder gute Browser den Zugriff auf die Cookies. D.h. Scripte von der Seite sub.domain.de können erstmal keine Cookies von domain.de lesen.

Da die SessionID standardmäßig über ein Cookie weitergereicht wird und diese nicht über die Domaingrenze hinwegkommt geht die Session verloren. Versuch mal die Session per URL Parameter weiterzugeben, dann könnte es vielleicht gehen.

JansonChristian
29.11.2004, 15:41:38
Wie kann ich eine session per url parameter weitergeben?

bazubi
29.11.2004, 15:53:57
Per ini_set() kannst festlegen, dass PHP die Session nicht über Cookies sondern über die URL weitergibt. Den genauen Befehlsaufbau habe ich nicht im Kopf, such einfach mal bei php.net nach ini_set.

JansonChristian
29.11.2004, 16:20:23
Hab den befehl :

ini_set("session.use_trans_sid","1");

gefunden und ausprobiert, funktioniert aber nicht, weiß auch nicht, wo ich den befehl eingeben muss?

bazubi
29.11.2004, 16:28:51
Ganz oben noch vor session_start(). Nebenbei bemerkt musst Du den Befehl zweimal anwenden. Einmal um trans_sid einzuschalten und einmal (am besten davor) umd session.use_cookies auszuschalten. Wenn ich das richtig sehe müsste dass dan so gehen:


ini_set('session.use_cookies', '0');


Dann sollte auf jedenfall hinter jedem Link auf der Homepage noch ein PHPSESSID=wasauchimmer stehen.

JansonChristian
29.11.2004, 16:42:47
Habs probiert, wenn ich es eingebe, wird gar keine session mehr übergeben?

Wenn ich es auf meiner index seite eingebe, dort werden die cookies gelesen, kennt er diese auch nicht mehr.

Binde aber auch die Tabelle mit den links über include ("header.php"); ein.

bazubi
29.11.2004, 16:44:13
Aber die Links werden mit den SessionIDs ausgerüstet?

JansonChristian
29.11.2004, 16:46:29
Lade die Daten der user von meiner Datenbank und setze dann
zum Beispiel:

$_SESSION['nick'] = nickname von der Datenbank

JansonChristian
29.11.2004, 16:49:28
Die Links sind einfache Links, wie :

<a href="http://www.meinedomain.de/home.php" class="white">Startseite</a>

bazubi
29.11.2004, 16:50:32
Wenn Du die Seite im Browser anzeigen lässt sollte jeder Link ungefähr so aussehen:

<a href="datei2.php?PHPSESSID=fkdsalfds8789">Klick mich</a>

Wenn das der Fall ist geht die Weitergabe der URL, dann liegt es schonmal nicht daran.

JansonChristian
29.11.2004, 17:00:59
Habs jetzt so probiert, funktioniert auch nicht.
Er zeigt mir nach der seite nichts an.

<a href="http://www.meinedomain.de/home.php?<?php echo strip_tags(SID)?>" class="white">Startseite</a>

JansonChristian
29.11.2004, 17:26:41
Hab jetzt den link geändert:

<a href="http://www.meinedomain.de/home.php?PHPSESSID=<?php echo $PHPSESSID ; ?>" class="white">Startseite</a>

Jetzt zeigt er mir die sessionid an, aber hat immer noch keine $_session

http://anzeigenmarkt.ip-la.de/?PHPSESSID=b7a44d81a54d06e4cb6b6fc18f0bcd0d

JansonChristian
29.11.2004, 17:31:47
Ok, jetzt wird die session übergeben, aber jetzt kann ich mich nicht mehr ausloggen, es wird ja immer die sid übergeben?

xabbuh
30.11.2004, 08:23:57
Original geschrieben von JansonChristian
Ok, jetzt wird die session übergeben, aber jetzt kann ich mich nicht mehr ausloggen, es wird ja immer die sid übergeben?
session_unset() (http://www.php.net/session_unset)
session_destroy() (http://www.php.net/session_destroy)