Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Session beenden und neu starten [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Session beenden und neu starten


 
ProfOli
01-11-2005, 23:35 
 
Hallo!

Ich starte mit session_start() eine neu Session und bin der meinung mit session_unset() bzw. session_unregister() die Session wieder zu "löschen". Aber wenn ich wieder auf die Startseite gehe, und dort wieder session_start() ausgeführt wird, bekomme ich immer wieder die erste erzeugte Session_ID, warum ??

Wie kann ich das auf der Startseite überprüfen und ggf. mit session_regenerate_id() eine neue Session_ID erzeugen??

Danke und Gruß

 
onemorenerd
01-11-2005, 23:52 
 
session_unset() war mal, heute sollte man session_destroy() verwenden. Und lies dir auf der zugehörigen Manualseite gründlich den Text durch, da steht nämlich auch, wie man eine Session endgültig terminiert.

 
reallife
01-11-2005, 23:55 
 
session_destroy(); // löscht eine session
session_unregister("TEST"); // löscht eine Sessionvariable namens TEST
session_start(); // startet eine neue session, sucht allerdings erst nach einer vorhandenen session, wird keine gefunden,
// wird eine neue generiert andernfalls auf die vorhandene zurückgegriffen

 
ProfOli
02-11-2005, 00:07 
 
und genau das klappt nicht, ich bekomme die session nicht gelöscht :-(

 
Wurzel
02-11-2005, 00:09 
 
Original geschrieben von ProfOli
und genau das klappt nicht, ich bekomme die session nicht gelöscht :-( ... und das äussert sich wie?

 
ProfOli
02-11-2005, 00:10 
 
ich behalte immer die gleiche session_id

 
onemorenerd
02-11-2005, 00:12 
 
Das ist doch egal, solange der alte Zustand der Session (z.B. 'eingeloggt') verloren ging, du sozusagen eine frische Session mit einem alten Namen erhältst.

 
ProfOli
02-11-2005, 00:14 
 
na ich hab das problem, das ich wenn der user mir eine mitteilung schreibt ich dann immer die mitteilung plus eine neue meldung bekomme, solange er die gleiche session_id hat.

ist ja vielleicht nicht schlecht, aber wenn der user mit 5, 6 oder mehr mitteilungen schreibt, bekomme ich jeweils eine mail und in jeder mail steht eine mitteilung mehr.

 
Wurzel
02-11-2005, 00:26 
 
wenn du die "meldungen" zusammen mit der session-id in der db speicherst, setz ein zusätzliches flag, ob eine mail gesendet wurde oder nicht.

ansonsten schildere dein problem in einem ganzen satz und stell dir vor wir wären 3 jahre alt :)

 
ProfOli
02-11-2005, 14:22 
 
wie gesagt, ich habe folgendes problem:

ich möchte bevor ich session_start ausführe überprüfen ob bereits eine session existiert, wenn ja, dann diese session beenden und eine neue starten bzw. wenn keine existiert eine neue beginnen.

kann ich irgendwie überprüfen ob eine session bereits existiert?

 
wahsaga
02-11-2005, 14:28 
 
Original geschrieben von ProfOli
kann ich irgendwie überprüfen ob eine session bereits existiert?
Nicht so, wie du das möchtest.
Ob eine Session existiert, findest du darüber heraus, dass du mit der Session-ID session_start() aufrufst - entweder hast du dann eine bestehende Session wieder aufgenommen, oder aber eine neue erstellt.
(So'n Quatsch wie manuell im Session-Tempdir nachzusehen, ob eine Sessiondatei zur ID existiert, wollen wir hier mal lieber nicht vorschlagen ...)

ich möchte bevor ich session_start ausführe überprüfen ob bereits eine session existiert, wenn ja, dann diese session beenden und eine neue starten bzw. wenn keine existiert eine neue beginnen.
Es läuft also eigentlich darauf hinaus, dass du in jedem Fall immer eine neue Session starten möchtest? (Wozu?)
Wenn ja, setze vor dem session_start einfach die Session-ID auf einen neuen, zufälligen Wert - dann hast du immer eine neue Session.
(Aufräumen der alten übernimmt der GC - obwohl, ob der das bei einem derart unsinnigen Vorgehen noch alles schafft ...?)


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:34 Uhr.