Es werden 2 Session-ID's vergeben - warum?
Klaus Becker
- php
Hallo NG,
Folgende Datei wird in der Index.php includet:
require ("include/config_global.php"); /* hier steht die URL */
// Session-Name vergeben und Session starten
session_name('ID');
session_start();
$s = $_COOKIE['ID'];
// Session-Variablen registrieren
$_SESSION['User'] = "Besucher";
$_SESSION['Status'] = "Besucher";
$_SESSION['Code'] = "Temporaerer Cookie";
$_SESSION['Login'] = "Kein";
// URL zerlegen für Cookie
preg_match("/^(http://)?([^/]+)/i", $stamm, $ziel1);
$host1 = $ziel1[2];
preg_match("/^(www.)?([^/]+)/i", $host1, $ziel2);
$cookie_url = $ziel2[2];
// Cookie-URL ende
// Temporäre Cookies setzen
setcookie ("User", $_SESSION['User'], 0, "", ".$cookie_url");
setcookie ("Status", $_SESSION['Status'], 0, "", ".$cookie_url");
setcookie ("Code", $_SESSION['Code'], 0, "", ".$cookie_url");
setcookie ("Login", $_SESSION['Login'], 0, "", ".$cookie_url");
Wenn ich nun auf einer folgenden Seite mit print_r($_COOKIE); die gesetzten Cookies anschaue, dann wird mir ein weiteres Cookie mit Namen PHPSESSID und einer Session-ID angezeigt.
Die Session-ID wird also 2x erzeugt! Einmal in der includeten Datei, also lt. o.a. Code unter $_COOKIE['ID'] und dann nochmals als PHPSESSID auf er Folgeseite.
Kann mir jemand erklären, warum das so ist? Ich such mir hier nen Wolf und schaffe es wohl nicht ohne Hilfe. :)
Im voraus schonmal vielen Dank
Gruß
Klaus
hi,
Wenn ich nun auf einer folgenden Seite mit print_r($_COOKIE); die gesetzten Cookies anschaue, dann wird mir ein weiteres Cookie mit Namen PHPSESSID und einer Session-ID angezeigt.
Die Session-ID wird also 2x erzeugt! Einmal in der includeten Datei, also lt. o.a. Code unter $_COOKIE['ID'] und dann nochmals als PHPSESSID auf er Folgeseite.
PHPSESSID ist der standard-sessionname, den PHP verwendet.
hast du den hinweis auf http://www.php.net/manual/de/function.session-name.php beachtet?
"Der Session-Name wird auf den Ausgangswert zurückgesetzt, der zu Beginn in session.name gespeichert wurde. Deshalb muss session_name() bei jeder Anfrage aufgerufen werden (und bevor session_start() oder session_register() aufgerufen wurden)."
hast du also auch auf der folge-seite
session_name('ID');
vor session_start() verwendet?
gruss,
wahsaga
Hallo auch,
"Der Session-Name wird auf den Ausgangswert zurückgesetzt, der zu Beginn in session.name gespeichert wurde. Deshalb muss session_name() bei jeder Anfrage aufgerufen werden (und bevor session_start() oder session_register() aufgerufen wurden)."
hast du also auch auf der folge-seite
session_name('ID');
vor session_start() verwendet?
jeppa, habe ich. Leider immer das selbe Ergebnis von print_r($_COOKIE):
Array ( [User] => Besucher [Status] => Besucher [Code] => Temporaerer Cookie [Login] => Kein [Stylesheet] => 1024 [ID] => 7f4a98371c3e02d6bff322bcb5ff9b5b [PHPSESSID] => 4de2318d40235a8d01ce34eaef22ff54 )
2 Session-id's. Ich weiß echt nicht mehr weiter.
Danke für deine Antwort. :)
Moin!
hast du also auch auf der folge-seite
session_name('ID');
vor session_start() verwendet?jeppa, habe ich. Leider immer das selbe Ergebnis von print_r($_COOKIE):
Array ( [User] => Besucher [Status] => Besucher [Code] => Temporaerer Cookie [Login] => Kein [Stylesheet] => 1024 [ID] => 7f4a98371c3e02d6bff322bcb5ff9b5b [PHPSESSID] => 4de2318d40235a8d01ce34eaef22ff54 )
2 Session-id's. Ich weiß echt nicht mehr weiter.
Hast du die Antwort gelesen?
Da stand drin:
Wenn du session_name() verwendest, mußt du es vor _jedem_ session_start() in deinem Code verwenden, nicht nur vor einem, weil sonst das session_start() _ohne_ vorheriges session_name() eine neue Session mit Standardnamen startet.
Und wenn sich das trotz Änderung im Code nicht ändern, liegt das daran, dass dein Browser sich das Cookie noch immer merkt, auch wenn dieser Teil schon garnicht mehr von PHP benutzt wird. Browser neustarten, Cookies löschen, Cache löschen, nochmal gucken.
- Sven Rautenberg