Anzeige:

PHP Login, Cookies, Session und lifetime

Domi

Blog Benutzer
Hallo Leute, hab da eine Frage an euch... mein Kollege von der Arbeit und ich sind uns noch nicht 100% einig. Wir bauen gerade wieder an einem Projekt mit Login. Frage ist nur, sollte der Login (wenn es dann geklappt hat) in einem Cookie oder eher in der Session gespeichert werden?!

Grundlage der Thematik ist folgende... wir haben auf einer unserer diversen Webseiten eine Eingabemaske zum Buchen einer Versicherung. Klappt auch, aber ab und an (da gibt es nicht mal ein System) passiert es, dass alles was der Besucher eingibt, weg ist.

Kurzes Beispiel,
- Seite 1 der Maske, man wählt das Produkt aus
- Seite 2, Persönliche Daten (Name, Anschrift etc.)
- Seite 3, Bankverbindung
- Seite 4, Kontrollseite mit Abschluss-Button

Ab und an passiert es dann aber mal, dass ein Besucher auf "Abschluss" klickt, dass Formular etwas macht und alles weg ist. Der Abschluss kommt nicht zustande weil alles was in $_SESSION[] drin stand weg ist. Aus irgend einem Grund wurde die PHPSSID geändert. Das konnten wir schon mal herausfinden, weil wir für uns eine Art-Debug-Tracking in der Datenbank gebaut haben.

Nun haben wir bedenken, wenn wir mit Session den Login bauen und die Besucher etwas machen, dass sie dann wieder mal raus fliegen. Daher kam der Gedanke mit dem Cookie in Verbindung mit der SQL Datenbank (abgleich über ein SHA256 + User ID etc.), aber kann man nicht auch dafür sorgen das die PHPSSID bestehen bleibt?! Wir haben auch noch keinen wirklichen Anhaltspunkt wieso dieses passiert... Das passier Wochen und monatelang gar nicht, da klappt alles und dann haben wir mal wieder einen dazwischen wo es schief geht. Besucher der Seite ruft dann natürlich an, gibt die Info weiter, Chef bekommt das mit und findet es nicht lustig.

Es ist auch nicht so dass wir erst seit gestern bauen... unser System besteht ja nun schon seit knapp 10 Jahren, aber es wäre toll wenn man solche kleinen Probleme mal in den Griff bekommt. Ja, dass ist eines der elementarsten Dinge in solchen Bereichen, aber irgendwo stehen wir auf dem Schlauch... zumal wir es auch selbst nicht nachvollziehen können. Wenn wir die Maske nutzen, klappt es wieder.

Daher wäre die Frage, Cookies oder eher Session für einen Login verwenden und wie könnte man denn das "Problem" mit der wechselnden PHPSSID verhindern?! Oder können wir da gar nichts machen und es ist wirklich ein Problem der Enduser (z.B. Browser)?

Vermutlich haben mein Kollege und ich vor Jahren schon irgendwo einen Denkfehler gemacht... und bevor wir jetzt starten und es heißt "Cookie würde ich echt nicht mehr verwenden weil...", frage ich lieber mal nach :)

Gruß, Domi
 

GwenDragon

Registered User
Anfängern würde ich sagen: "Sucht doch mal nach 'PHP+Session+multipage+multiform' im Web."
Wieso fragt ihr denn, wenn ihr wisst wie man Sessions in PHP programmiert!?

Natürlich kann man Cookie und eine Session verwenden. Ihr müsste nur berücksichtigen, dass es auch Nutzer gibt, die Cookies blocken. Wie also die Session-ID mitgeführt wird, ob im Cookie bzw. Formular, müsst ihr wissen.
Dass bei euch die Session-ID flöten geht, liegt aber am falschen Handling. Wann bei euch die Session invalidiert und wie ihr eine Transaktion (wohlgemerkt des Ablaufs, nicht nur der DB) durchführt weiß ich doch nicht.

Und wo ein Fehler passiert kann man doch raus bekommen, wenn man automatisierte Tests erstellt hat und die laufen lässt. Oder habt ihr das vor 10 Jahren mal eben vergessen wegen der Bequemlichkeit.

Mehr kann ich so nicht sagen. Ich wäre auch eine schlechte PHP-Nachhilfe.
 

Domi

Blog Benutzer
Wieso fragt ihr denn, wenn ihr wisst wie man Sessions in PHP programmiert!?
Viele Wege führen bekanntlich nach Rom... nur weil unsere Variante funktioniert, muss sie ja nicht die beste sein. Siehe das Handling in unserer Eingabemaske. Aber vermutlich habe ich das Problem sogar schon gefunden was die Maske von uns und dem komischen Phänomen angeht.

Es ist wie folgt, sobald man ein Produkt ausgewählt hat, folgt Seite 1 der Eingabemaske. Wenn diese aber geöffnet wird, werden alle Daten in der Session raus genommen damit man das Formular von neu beginnen kann. An sich ja auch gar kein Problem, außer der Besucher der Seite entschließt sich auf Seite 4 (Kontrollseite) einen neuen Tab zu öffnen und geht die Prozedur noch einmal mit einem anderen Produkt durch. Dann hat er ja alles aus dem ersten Durchlauf überschrieben und es passt nichts mehr zusammen.

Automatisierte Tests gibt es nicht... Will Chef nicht... der ist sogar gegen alles was automatisiert ist (ja, Backups würde er auch immer nur manuell machen, wenn ich diese nicht schon automatisiert hätte). Daher gehen wir Personen die Formulare von Seite 1 - X manuell durch... es klappt ja auch immer, es hatte halt nur nie jemand das Phänomen mit dem wechselnden Tab in den letzten 10 Jahren geprüft. Liegt aber auch daran dass im Monat oder Quartal der Fehler einmal auftaucht :)

Aber auf den Suchterm "PHP+Session+multipage+multiform" oder "php multi page form" wie er mir eben vorgeschlagen wurde, wäre ich nicht gekommen. Klar, es gibt das "Affenformular" das kenne ich noch... aber die Ergebnisse die dein Suchterm bringen sind noch mal was anderes. Aber was soll man sagen, Finden ist ja auch einfach... suchen ist schwer. Vor allem wenn man nicht weiß was man suchen soll ;)
 

GwenDragon

Registered User
Automatisierte Tests gibt es nicht... Will Chef nicht... der ist sogar gegen alles was automatisiert ist
Wenn ihr das so wollt, ist eure Entscheidung. Stand heutiger Produktionsabläufe von Software ist das jedenfalls nicht.

Daher gehen wir Personen die Formulare von Seite 1 - X manuell durch... es klappt ja auch immer, es hatte halt nur nie jemand das Phänomen mit dem wechselnden Tab in den letzten 10 Jahren geprüft.
Ihr habt eben die falschen Leute testen lassen. Wenn das abhängige Leute eurer Firma oder gar Entwicklungsabteilung sind, ist das schwierig, denn die wollen ja dass es geht, und testen dann eher nicht auf die harte Tour, und Der Chef könnte ja deswegen [hier beliebiges Unangenehmes einsetzen] oder so.

An sich ja auch gar kein Problem, außer der Besucher der Seite entschließt sich auf Seite 4 (Kontrollseite) einen neuen Tab zu öffnen und geht die Prozedur noch einmal mit einem anderen Produkt durch.
Ja, und? Bei einem neuen Produkt gibt es eine neue Session. Aber wieso sollte die des anderen Produkts dann gelöscht werden? Wieso sollte denn die Session verfallen?

Dann hat er ja alles aus dem ersten Durchlauf überschrieben und es passt nichts mehr zusammen.
Wieso überschriebt der dann was? Und wieso past dann nichts mehr zusammen?

Zwei Sessions, zwei Produkte im Warenkorb.
Wie euer Warenkorb funktioniert weiß ich nicht. Ich rätsele immer noch wie ihr das programmiert habt.
 
Top