Sessions - Wie am besten ? (WK-System)

Sebigf

Erfahrenes Mitglied
Hallo zusammen!

Ich arbeite an einer Art Warenkorbsystem.

Jetzt habe ich es so gemacht dass alle "abgelegten" Artikel in einen SQL entry kommen mit Menge usw....

Dabei wird gespeichert:

1x hash gespeichert in cookie
1x sessionid in session

Ich wollte es letztendlich so machen, dass alles in einer Session ist, wenn ein User keine cookies aktiviert hat. Nun bin ich am überlegen was wohl das sinnvollste für sowas ist.

Ich stehe imho deswegen ein bisschen auf dem Schlauch, weil auch die Sessions wohl in cookies gespeichert werden (laut. phpinfo)!

Ich hoffe es kann mir einer helfen!

Danke
 
Im Cookie wird nur die Session-ID gespeichert. Falls der Browser keine Cookies akzeptiert, wird von PHP der HTML-Code so umgebaut, dass die Session-ID entweder in Formulare als hidden-Feld, oder in Links als Parameter angehängt wird.

Du kannst also beruhigt eine größere Array-Variable für deinen Warenkorb verwenden. Diese packst du dann einfach in $_SESSION und kannst über die gesamte Session darauf zugreifen.

Das ist auch das Verfahren, wie es in gängigen Shopsystemen (z.B. osCommerce) gemacht wird.

Gruß

Marian
 
Also kann ich quasi immer mit sessions arbeiten obwohl cookies deaktiviert sind?

Und noch etwas....

wie greife ich auf eine session zu?

$_REQUEST['xxx']

oder

$_SESSION['xxx']

und was sind die Unterschiede

Danke
 
Das globale Array $_REQUEST beinhaltet alles, was per POST oder GET verschickt wurde. Auch kann man darüber die Werte aus einem Cookie erhalten. Ob man darüber auch Zugriff auf die Session-Variablen hat, weiß ich nicht. Aber normalerweise verwendet man das globale Array $_SESSION.
 
Mhh, habe gerade noch etwas probiert.

Die Session wird nur mit "$_REQUEST" ausgelesen und nicht mit $_SESSION!

es geht darum dass ich die session, welche ich so gemacht habe auslesen kann...

Code:
session_name('sid');
@session_start();
 
Hallo, also ich kann dir zwar nicht sagen ob man mit $_REQUEST ein Session abrufen kann, da ich ein ziemlicher Anfänger in PHP bin, jedoch kann ich dir sagen, dass man Daten einer Session mit $_SESSION['xx'] abruft, jedoch musst du an jeden Link noch die Session anhängen, wenn der Server diese nicht automatisch übernimmt, wie du ja sagtest.
Ein kleines Beispiel:
1. Datei:
Code:
<?php 
// Session starten 
session_start();
// Sessionvariablen erstellen ,warenid is nur ein Beispiel ;)
$_SESSION['warenid']=$warenid;
// Link auf eine 2. Datei
echo "<a href=\"2.php?sessionid=$sessionid\">Link</a>";
?>
2. Datei
Code:
<?php
// Abfrage ob Session erstellt ist, wenn ja dann als SessionID verweden.
if (isset($_GET['sessionid'])) 
{
  session_id($_GET['sessionid']); 
} 
// Session Starten
session_start(); 
// Variable $sessionid mit der, der URL mitgelieferten sessionid gleichsetzen.
$sessionid=$_GET['sessionid'];

echo $_SESSION['user_id'];
// Link auf eine 3. Datei
echo "<a href=\"3.php?sessionid=$sessionid\">noch ein Link</a>";
?>
Ich hoffe es hat dir geholfen ;)

MfG xk!ll
 
Danke für den Tipp!

Soweit habe ich mir das auch alles angeschaut.
Aber mein Problem ist einfach nur, dass z.b. die $_SESSION['wert'] nicht gespeichert bleibt.

Ich habe das "setting" in die index.php gelegt, wo alle content seiten inlcudet werden.
So habe ich es in der index.php stehen...

Code:
if(!$_SESSION['hash'])
{
$_SESSION['hash'] = hash(); //erzeugt 32 stelligen hash
}else
{
echo "failed";
}

Und da $_SESSION['hash'] anscheinend wohl immer leer (!) ist, wird immerwieder ein neuer "hash();" generiert.

Danke!
 
Aber mein Problem ist einfach nur, dass z.b. die $_SESSION['wert'] nicht gespeichert bleibt.

dann ist es wohl ein Problem mit der Session selbst. Hast du wirklich immer am Anfang des Skriptes session_start() aufgerufen?

Welche PHP-Version verwendest du (das kannst du mit phpinfo() herausfinden), die Variable $_SESSION gibt's erst ab Version 4.1.0 Leider sind immer noch veraltete PHP-Versionen im Einsatz. Dann müsstest du $HTTP_SESSION_VARS stattdessen verwenden.

Wenn's beides nicht ist, dann kann ich dir nur helfen, wenn ich den Quellcode vollständig zur Verfügung habe (oder zumindest die relevanten Teile davon), damit ich das auf meinem Webserver mal testen kann.

Gruß

Marian
 
Hallo!

PHP-Version: 4.3.4

Also die index.php (inder alles includet wird) beginnt der code so...

Code:
<?php

## Session
session_name('sid');
@session_start();

Folgend kommt halt die Sache mit der Session selber

Code:
if(!$_SESSION['hash'])
{
$_SESSION['hash'] = hash(); //erzeugt 32 stelligen hash
}

und halt der inlcude Teil.

In der PHP info steht auch noch "session.use_cookies - On"! Hat es zu bedeuten, dass sessions immer mit cookies gespeichert werden?

Also ich muss dazu sagen, dass ich mit dem firefox (cookies akzeptieren - aus) arbeite! Es geht mir ja darum, dass ich die sessions nutzen kann ohne das cookies genutzt werden. ^^

Danke
 
Zurück