Kleines Session/Cookie Problem

Warper

Erfahrenes Mitglied
Hi!

schreibe momentan meinen ersten Shop. Es ist auch alles bislang super gelaufen, nur stehe ich gerade an einem kleinen Problem.

Der Warenkorb habe ich so geschrieben, dass die Artikel mit Session_id vom Kunden und Artikel_id in eine Tabelle in der Datenbank geschrieben werden.

Dies funktioniert auch wunderbar. Nur geht die Session ja leider "verloren" sobald das IE Fenster geschlossen wird. Dies ist so natürlich nicht gewollt, bzw. nicht wirklich komfortabel.

Meine Idee war jetzt einfach die Session_id beim kunden als Cookie zu speichern. Wenn er nun wieder auf die Seite kommt, ist die Variable $cookiename mit dem Wert $altesession_id vorhanden.

Die Frage ist nur, kann ich PHP beim session_start() oder auch danach, eine Session_id vorgeben? Natürlich geh ich dann die Gefahr ein, dass im Fall 1:10^x eine Session_id wiederverwendet wird, die bereits wieder genutzt wurde, aber mir fällt nichts besseres ein.

Also wäre super wenn ihr mir helfen könntet. Ist mein ansatz richtig? Völlig murks?

danke schoneinmal im vorraus,
mfg warper
 
Ich kann dir jetzt keine konkrete Lösung anbieten, jedoch würde ich etwas machen wie jedem Besucher ein Cookie aufzudrücken und in diesen die USER-ID (select max(id) from shopDB) speichern.
Wenn kein Cookie gesetzt werden kann,würde ich die Sessions verwenden

if(setcookie(blabla))
{
irgendwas();
}
else
{
use_session();
}

Bei Cookies musst du nur darauf achten,dass bevor irgendetwas an den Browser übergeben wird, das Cookie schon behandelt(gesetzt/gelesen) sein muss.

Wenn ein User tatsächlich cookiekompatibel ist, nutze dies.
Es kommt am Ende billiger heraus, wenn du dem User eine hochgezählte ID gibst (1,2,3,4,5,100000) als eine 16 oder 32 oder sowas stellige Session ID zu speichern, die eventuell beim nächsten User wieder auftritt.

Zufall =5 von 1000000, wie kannst du dir sicher sein,dass nicht die ersten 5 gemeint sind, es gibt hier keine Diffusion :P

und session-ids fragt man übrigens mit session_id(session); ab, siehe http://www.selfphp.info

//Einfall
WENN ein user schon ein cookie und somit eine Id hat, muss ja auch kein Datenbankeintrag für ihn erstellt werden.
//Einfall
Dies lässt sich mit flags realisieren ($knowuser = 0)
 
Also so hab ich deine Version verstanden. Simpel gedacht:

Eine DB-Tabelle mit nur einem Spalte id und auch nur einem Eintrag. der ist zu Beginn bei Null, wird ausgelesen und der erste user bekommt dann nen cookie gespeichert mit u_id=0. Dann wird 0 um eins erhöht und ein Mysql-update-query gemacht.

Der nächste bekommt dann die 1 etc. Also komplett ohne Sessions. Nur möglicherweise als Ausweichmöglichkeit.

Ok, is ne Möglichkeit.

Problem: Warenkorb ist schon fertig, funktioniert mit Sessions einwandfrei. Nur hab ich halt nen komplett leeren Korb nachdem ich den Browser geschlossen und wieder geöffnet hab.

Wie ich die session_id herausbekomme ist klar und habe ich ja auch bereits verwendet. hab mir nur halt gedacht, die session id zusätzlich in nem cookie zu speichern. aber egal, habe gerade nen geistesblitz ;)

Was hälst du von folgender variante: sessionid wird in nem cookie gespeichert. wenn der user nun den browser schließt und wieder auf den shop geht und eine neue session_id zugewiesen bekommt wird diese mit der session_id im cookie verglichen. Wenn die neue ungleich der alten ist wird ganz einfach ein mysql_query(UPDATE) gefahren, bei dem alle einträge in der tabelle warenkorb mit der alten user_session_id auf die neue user_session_id gesetzt werden.

Was denkst du darüber?

Das gute daran, der Shop funktioniert völlig ohne Cookies, nur haben cookie-aktzeptierer eine komfortfunktion quasi mehr. :)

mfg Warper
und danke erstmal für deine einfälle!
 
ehrlich gesagt bin ich nicht so der Sessionliebhaber, vA weil ich meine sessions vernachlässige und sie als Ausweichmöglichkeit anbiete, die wahrscheinlich nicht einmal funktioniert.
Egal.
Du hast das Problem jetzt dadurch gelöst,dass Sessiondaten in einem Cookie gespeichert werden und mit der Datenbank verglichen werden, fein, klappt alles wunderbar.
Nur kann es jetzt passieren, dass zwei User., Frau Meier und Herr Müller die gleiche Session ID zugewiesen bekommen.
Da die IDs ZUFÄLLIG generiert werden, können sie auch innerhalb 10 minuten die gleiche ID zugewiesen bekommen.
Nun aber hat Frau Meier(das fiese weib) vollen Zugriff auf Benutzerdaten wie Passwörter und kann bestellen auf Teufel komm raus.

Fazit: Es funktioniert, ich hätte aber Angst, es auf die Öffentlichkeit(und erst recht auf die nette Frau Meier;)) loszulassen.


-->Sollte hier jemand Meier heißen: hahaha sorry, ist doch der 3.Häufigste Name in Deutschland, man kann sich also denken,dass STATISTISCH der Großteil seiner Besucher/Shopper Meier,Müller oder Schmidt heißen(was nur noch die Gefahr dieses Zufallsprinzipes verdeutlichn soll, am ende hat er nur Lindners wie mich im shop :P)
 
Das Problem der Sicherheit gibts nicht bei dem Shop. wird ein Shop ohne Anmeldung. Basiert nicht auf dem Prinzip der Massenbestellungen sondern auf der direkten kontakt-aufnahme.

Also, die bestellung wird zwar in die db geschrieben aber nur mit dem namen den der user in dem moment bei der bestellung angibt.

Also, das einzige problem wäre, dass frau meier auf einmal herr schmidts warenkorb hat. :)

mfg Warper
 
Zuletzt bearbeitet:
Zurück