WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 01.09.2003, 13:48   #1
row
Inventar
 
Registriert seit: 22.06.2001
Beiträge: 1.611


Standard PHP sessions werden doppelt angelegt

Ich habe einen Fragebogen mit PHP sessions gebastelt, der auch recht brav funktioniert. Jeder User bekommt eine Session-ID (einen UNIX timestamp) und hupft von Page zu Page bis zum Schluss, die Daten werden in eine MySQL Datenbank eingetragen. Das funktioniert gut auf meinem Rechner in der Arbeit (LAN & IE5.5)

Interessanterweise funktioniert das mit den Sessions von daheim per Modem und IE6 nicht so ganz - d.h jeder User wird zweimal unter der selben Session in der MySQL Datenbak eingetragen - nachdem ich manchmal die Daten auch aus der Datenbank dynamisch anzeigen lasse stehen dann die Sachen oft doppelt da, wie z.B.: Frage 1 von 1414 (besonders ärgerlich )

Ich befürchte dass hat mit dem Proxie oder Browser-Cache zu tun, oder? - vielleicht habt ihr ja eine Idee???
row ist offline   Mit Zitat antworten
Alt 01.09.2003, 14:07   #2
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

Einen TimeStamp als Session-ID zu verwenden ist nicht klug.

Da wird die selbe ID für die Dauer einer ganzen Sekunde vergeben!


Was das zweite Problem anbelangt, kapier ich das Problem noch nicht ganz...

Wenn du nicht zwei Einträge mit dem selben Erkennungsmerkmal willst, musst du die betreffende Spalte entweder als PK verwenden oder einen UNIQUE Index darauf legen.

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 01.09.2003, 14:17   #3
row
Inventar
 
Registriert seit: 22.06.2001
Beiträge: 1.611


Standard

Zitat:
Original geschrieben von käptn
Einen TimeStamp als Session-ID zu verwenden ist nicht klug.
Da wird die selbe ID für die Dauer einer ganzen Sekunde vergeben!
Sowas ähnliches habe ich mir auch gedacht
Gibt's da irgendeinen Zufallgenerator mit der ich eine Session-ID anlegen kann?


Zitat:
Original geschrieben von käptn
Was das zweite Problem anbelangt, kapier ich das Problem noch nicht ganz...
Wenn du nicht zwei Einträge mit dem selben Erkennungsmerkmal willst, musst du die betreffende Spalte entweder als PK verwenden oder einen UNIQUE Index darauf legen.
[/b]
Was ich bereits gemacht habe ist die Session als unique zu deklarieren mit dem Erfolg dass er dann nicht mehr in die MySQL Datenbank eintragen konnte wegen des Versuchs eine UNIQUE Feld mit dem selben Wert doppelt anzulegen. Ich weiss einfach nicht wieso er mir da zweimal die Session anlegt.
Ich dachte einfach da kugelt irgendwo einen zweite Version der Seite im Cache rum...
row ist offline   Mit Zitat antworten
Alt 01.09.2003, 20:48   #4
row
Inventar
 
Registriert seit: 22.06.2001
Beiträge: 1.611


Standard

So, jetzt habe ich daheim nochmals nachgesehen.
Folgendes passiert: anscheinend holt das Script nicht jedesmal die aktuelle Serverzeit zum Generieren der neuen ID sondern nimmt einfach die alte aus dem Cache - die dann halt doppelt generiert wird.
Kann dass sein?

Alle Versuche das Script oder per http-equiv="expires" zu zwingen die Zeit aktuell zu holen sind bis jetzt fehlgeschlagen
row ist offline   Mit Zitat antworten
Alt 02.09.2003, 11:38   #5
jonix
Veteran
 
Registriert seit: 03.08.2000
Alter: 47
Beiträge: 461


Standard

warum willst du die session-id eigentlich selbst vergeben?

in den kommentaren von http://www.php.net/manual/de/function.session-id.php gibts ein paar tips zur generierung eigener sid's
____________________________________
hampel.at
jonix ist offline   Mit Zitat antworten
Alt 02.09.2003, 13:15   #6
row
Inventar
 
Registriert seit: 22.06.2001
Beiträge: 1.611


Standard

Zitat:
Original geschrieben von jonix
warum willst du die session-id eigentlich selbst vergeben?

in den kommentaren von http://www.php.net/manual/de/function.session-id.php gibts ein paar tips zur generierung eigener sid's
Danke - ich hab's mittlerweile schon hingekriegt - die Session wird jetzt mit folgendem Code generiert:
PHP-Code:
$zufall=md5 (uniqid (rand()));
$_SESSION["username"] = "$zufall"
Was mir jetzt noch fehlt ist eine Möglichkeit wie ich Proxies und Browser Caches dazu bringe immer eine aktuelle Version der Seite abzurufen. Mit den <meta http-equiv="expires" content="0"> funktioniert dass nicht wirklich.
Hat jemand eine andere Idee?
row ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:15 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag