Insert bei Timeout

Hallo,

ich habe eine UserId, die bei der Anmeldung aus der DB ausgelesen wird.
Der User hat die Möglichkeit über ein Eingabeformular Daten einzugeben (mehrere Felder) die dann in einer Tab. gespeichert werden. Es wird für jeden DS die UserId mit gespeichert.

Beispiel [color=#0B5FB4]

insert into tabelle (feld1, UserId) values ('".mysql_real_escape_string($_POST['feld1'])."', $_SESSION['user']) [/color]

Hat der User nun das Formular ausgefüllt und macht “eine Pause” bis er aus Senden drückt ist ein Timeout. Die Daten werden zwar in die Tabelle gesendet, aber $_SESSION[‘user’] nicht. Da ist der Wert 0.

Wie kann ich das verhindern.

MfG
GuckstDu

Prüfe vor dem Eintragen, ob der Nutzer noch eine gültige Session hat.
Wenn nicht, lasse ihn sich zunächst wieder einloggen.

Anschliessend legst du ihm entweder die Daten erneut zur Eingabe vor (Stichwort Affenformular);
oder du speicherst sie gleich in der neu erstellten Session zwischen, und fügst sie von dort aus in die Datenbank ein, nachdem der Nutzer sich erneut authentifiziert hat.

[quote=“chrisb”]Prüfe vor dem Eintragen, ob der Nutzer noch eine gültige Session hat.
Wenn nicht, lasse ihn sich zunächst wieder einloggen.

Hallo,

ich würde das dann so prüfen wollen

if ($_SESSION['user'] !="") { insert } else {login}

das müsste doch klappen?

MfG
GuckstDu

Ob Variablen (bzw. wie hier Array-Einträge) vorhanden sind, prüft man sinnvoll mit isset.

Und wenn nur das machst, was du gezeigt hast - dann gehen die vom Nutzer eingegebenen Daten verloren.

Danke für den Hinweis auf isset !

Das die Daten verloren gehen ist mir jetzt klar, ich weiß nur nicht wie ich das lösen kann.

MfG

Das beschrieb ich bereits in der ersten Antwort.

Hi Chris,

Nach dem Timeout kommt der User wieder auf die Loginseite.
Hier hat er die Auswahl zu welche Datei er aufruft. Dateneingabe , Editieren usw.

In dem Beispiel ist der User aus der Eingabe “geflogen” wegen Timeout.
Jetzt müsste er ja automatisch wieder genau zu der Seite kommen und das Formular müsste mit den Daten die er bis zum Timeout eingegeben hat gefüllt sein.

Das habe ich schon verstanden, nur wie ich es realisiere ist mir noch unklar.

MfG

Muss er?

Das Login-Formular kannst du doch auch in der Formularseite anzeigen, wenn es erforderlich wird.

Oder gleich auf ihr bleiben.

Aber man kann sich natürlich auch, bevor man auf die Loginseite umleitet, merken, auf welcher Adresse der Nutzer vorher war - dann dann nach erfolgreichem Login wieder dorthin zurück-umleiten.

(Wobei Umleitungen m.E. immer als Notbehelf zu betrachten sind; in einer sinnvoll strukturierten Applikation haben sie wenig verloren.)

Danke, Du hast mir sehr geholfen.

MfG