Frage zu Session

S

starfoxfs

Hi zusammen,

Ich habe ein Suchformular, bevor ich eine Session gestartet habe konnte ich mit dem Browser "Back" Button zurück und die Werte die ich zur Suche eingetragen hatte standen noch im Formular, auch nachdem es abgesendet war.

Nachdem ich nun
PHP:
session_start();
angewandt habe sind die Werte nichtmehr drin.

Warum ?
Was hat das mit der Session zu tun ?

Kurz gefasst Browser back mit Sessions keine Daten mehr im Formular ohne Sessions Daten noch im Formulareingabefeld.
 
Zuletzt bearbeitet von einem Moderator:
Hast du die Felder des Formulars mit Standardwerten belegt im Markup?
z.B.:
HTML:
<input type="text" name="foo" value="" />
 
Und wenn du das value-Attribut entfernst?
Dann ist nichts voreingestellt und AutoFill kann fleißig überschreiben. Kenne das Verhalten von AutoFill im FF nicht so ganz.
 
Ich glaube nicht das es an Autofill liegt, es tritt ja auf wenn ich das Formular schon abgesendet hatte und mit dem Back Button zurück gehe.

Wenn ich Session gestartet habe aktuallisiert bzw setzt sich die includete Seite zurück wenn ich Session nicht gestartet habe dann bleibe die Werte drin und man kann das Formular im Prinzip gerade nochmal absenden.

:Update: Also ich hab mal bissi rumprobiert und es hat wohl was mit http://de.php.net/manual/de/function.session-cache-limiter.php zu tun.

Wenn ich den cache limiter auf "private" setze dann bleiben die Werte wieder erhalten.

Meine Frage nun, mir ist es ja ganz Recht das die Werte eben NICHT erhalten bleiben. Muss man dann den Cache limiter auf no cache explizit setzen oder ist der automatisch immer auf no cache wenn nichts gesetzt ist ?
 
Zuletzt bearbeitet von einem Moderator:
Im Manual steht zu Einstellung in der ini folgendes:

http://de.php.net/manual/de/session.configuration.php#ini.session.cache-limiter

Heißt also, das du mit ini_get() die Einstellung auslesen kannst. Ist sie auf einen anderen Wert als nocache eingestellt, so kannst du das ja mit der von dir genannten Funktion ändern.

Grundsätzlich kann man diese Frage natürlich nicht mit "ja" oder "nein" beantworten, da es sich um eine Einstellung in der php.ini handelt. Diese kann vom Provider des Webspaces nach eigenen Gutdünken modifiziert werden.
 
Standard steht der Cache-limiter auf no cache.

Naja gut jetzt hab ich noch eine 2te Frage zum Thema Sessions und zwar habe ich eine Login.php und eine Checklogin.php

in der Login.php starte ich die Session und registriere einen Wert in der Session.
dann sende ich ein Formular per Post ab und prüfen dann in der Checklogin.php ob der Session Wert noch da ist.

Soweit sogut, Problem ist das die ganze Session in der Checklogin.php nach absenden des Formulares nichtmehr existiert. :confused:
 
Jo hab ich auch gerade gemerkt :), jetzt funktionierts. Ich war immer der Meinung das session_start nur einmal gesetzt werden muss aber ist wohl nicht so. Vielen Dank :)
 
session_start() muss immer dann aufgerufen werden, wenn man die Session innerhalb eines PHP-Scripts verwenden will. Außer das PHP-Script ist selbst in ein Script eingebunden (include), welches selbst schon eine Session gestartet hat.

HTTP ist ein verbindungsloses Protokoll. Daher weiß der Web-Server auch beim 2. Aufruf nicht, das du schon mal da warst (außer du verwendest Sessions). Ok, so ganz richtig ist das auch nicht. Schließlich hast du einen Referer, der auf die letzte aufgerufene Seite zeigt. Aber lassen wir diese Details. Ich denke, du wirst dich da selbst einlesen ;-)
 
Zurück