Session in Cookie

kerstel

Erfahrenes Mitglied
Hallo,

ich hab ein kleines Shopsystem für einen Kunden programmiert, das in einer Session z.B. Warenkorb Daten speichert. Nun hab ich einen Flashbanner, der bei Klick die Produktseite in einem neuen Browserfenster öffnet (ist so Kundenwunsch).

Nun ist es so, das im neuen Fenster der Warenkorb leer ist, da die Session nicht mehr vorhanden ist. Ich würde nun gern die Session ID in einem Cookie speichern. Wenn nun keine Session ID vorhanden ist, soll die aus dem Cookie genommen werden. Geht sowas?

Danke und Gruß
Kerstel
 
Hi,

ich würde erstmal herausfinden, warum denn die Session in dem neuen Fenster verloren ist. Die Session-ID wird in der Regel sowieso in einem Cookie gespeichert, wenn Cookies aktiviert sind.

LG
 
Weiß ich schon warum er das macht, liegt an dem Flash Framework. Deswegen such ich ja ne andere Lösung ;-)

Cookies sind aktiviert, wie bekomme ich denn die Session ID wieder da raus?

Gruß
Kerstel
 
Hi,

Cookies sind aktiviert, wie bekomme ich denn die Session ID wieder da raus?

Wenn das Session-Cookie gesetzt wurde, sendet der Browser das im Request mit und die Session wäre nicht verloren. Bist Du sicher, dass die Session-ID beim Client in einem Cookie gespeichert und nicht in der URL übergeben wird?

LG
 
Zuletzt bearbeitet:
stimmt, die Session steht in der URL. Habe jetzt mal folgendes Konstrukt gebildet:

PHP:
  if (!isset($_COOKIE["SessionID"]))
  {
   setcookie("SessionID", session_id(), time()+3600);  /* verfällt in 1 Stunde */
  }
  else
  {
   if (session_id()==$_COOKIE["SessionID"])
   {
    echo "gleich";
   }
   else
   {
    echo "Ungleich";
    session_id($_COOKIE["SessionID"]);
    session_start();
   }
  }
  echo session_id()." - ".$_COOKIE["SessionID"]."<br><br><br>";

Die session_id wird neu gesetzt, mit der ID die im Cookie steht, allerdings sind die Daten der Session trotzdem nicht da. Fehlt da was?

Die Abfrage läuft übrigens immer, wenn die Cookie Variable gesetzt ist, in den Ast mit echo "Ungleich"...


Gruß
Kerstel
 
Zuletzt bearbeitet:
Hi,

Die Abfrage läuft übrigens immer, wenn die Cookie Variable gesetzt ist, in den Ast mit echo "Ungleich"...

ja, da, wo Du das abfragst, ist die Session ja auch noch gar nicht gestartet...
Konfiguriere lieber den Server so, dass die Session-ID immer im Cookie gespeichert wird. Wenn Du keinen Zugriff auf die php.ini hast, kannst Du diese Einstellung auch per [phpf]ini_set[/phpf] setzen.

Die zweite Möglichkeit wäre, die Session-ID auch an den Link des Flashbanners anzuhängen. Cookies sind aus Sicherheitsgründen aber zu bevorzugen.

LG
 
Hi,

kann schon sein, aber mit dem echo Befehl unten geb ich ja beide IDs aus, und sind auch beides die gleichen.

Hab jetzt mal folgendes gemacht:
ini_set("session.use_only_cookies", 1);

das is doch der richtige Parameter oder? Geht aber immer noch nicht, fehlt noch was?

Mit dem Flash kann ich leider nix machen, da kann ich nicht eingreifen.

Gruß
Kerstel
 
Hi,
also ich hab mal wild gegoogelt, aber nix gescheites gefunden.

Muss doch dafür irgend ne Lösung geben, oder?

Gruß
Kerstel
 
Hi,

Hab jetzt mal folgendes gemacht:
ini_set("session.use_only_cookies", 1);
Geht aber immer noch nicht, fehlt noch was?

Hast Du das überall eingebaut?
Hast Du dieses Konstrukt zum Setzen des Cookies wieder rausgenommen?
was liefert ein var_dump($_COOKIES), was var_dump($_SESSION)?
Wird die SessionID immer noch im Link übergeben?
Wie sieht es aus, wenn Du das Flashbanner durch einen einfachen Link ersetzt?
...

Fragen über Fragen. Du wirst schon der Ursache auf den Grund gehen müssen. Aus der Ferne ist es kaum möglich, da was zu sagen. Deshalb bringt Dich Google da vermutlich auch nicht weiter...

LG
 
Zurück