PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SESSION Fragen


Cooper
12.05.2004, 11:37:24
Hi, habe mal eine Frage zu Sessions, Ich verwende eine Session über 3 Seiten und lösche diese auf der letzten Seite. Jetzt möchte ich, das wenn über den Browser der Back Button verwendet wird oder die 2te eine der Seite aktualisiert wird die Session gelöscht wird. Das Problem ist, das die eigentliche Session erst auf der letzten (3ten) Skriptseite gelöscht wird, und wenn ein User nicht bis dahin kommt, bleibt die Session erhalten, das will ich aber nicht.


Ich hoffe das war halbwegs verständlich erklärt.

thx,

Cooper

feuervogel
12.05.2004, 11:56:19
hallo!

du willst also, dass jede der drei seiten nur maximal ein mal geladen werden kann?

dann speicher das doch für die jeweilige seite einfach in der session:)

mal grob überschlagen:


session_start();

if ( !isset( $_SESSION[ 'loadcount' ] ) ) {
$_SESSION[ 'loadcount' ] = 1;
} elseif ( $_SESSION[ 'loadcount-seitexyz' ] ) {
die( "diese seite wurde mehr als ein mal geladen" );
}

//hier weiter im script...


habs getestet, geht:)

Dago
12.05.2004, 11:59:51
Back-Button: Speichere doch einfach auf jeder Seite dessen Seitenzahl in der Session ab. Vergleiche diese auf jeder Seite und wenn die Zahl größer als die aktuelle ist: Zack und weg.
Achja, die meisten Browser werden bei einem Klick auf deren Back-Button die betroffene Seite aus dem Cache laden, ohne eine Verbindung zum Server aufzunehmen. Das müsste man aber mit einem entsprechenden Header-Eintrag verhindern können.

Aktualisierte Seite: Kommt drauf an, "wie" die Seiten aktualisiert werden. Werden die Source-Dateien geändert? Werden andere Datenbank-Einträge angezeigt?
Auf jeden Fall müsstest du den Zeitwert der letzten Aktualisierung abrufen, um das zu realisieren. Diesen speicherst du wieder in der Session und vergleichst: Ist der Wert in der Session kleiner als der Aktuelle, dann löscht du die Session.

Dago
12.05.2004, 12:02:26
Hehe, eine Frage, zwei verschiedene Antworten.
Bin mal gespannt, wer von uns die Frage richtig verstanden hat ;)

Cooper
12.05.2004, 12:04:38
Danke für die schnelle Antwort.

Werds gleich mal probieren.

thx,

Cooper