Ergebnis 1 bis 9 von 9

Thema: POST-Data bzw. $_SESSION['FORM_DATA'] löschen?

  1. #1
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard POST-Data bzw. $_SESSION['FORM_DATA'] löschen?

    Hallo,

    auf der Abschluss-Seite eines mehrseitigen Formulares -> also der Weiterleitungsseite, habe ich ein extra
    Modul eingebaut, welches die $_SESSION['FORM_DATA'] löschen soll.

    unset($_SESSION['FORM_DATA']) bringt aber keinen Erfolg - die Daten sind beim wiederholten Ausfüllen des Formulares
    teilweise immer noch da .... wie kann ich die denn da entfernen?


    Danke

    Mark

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Ich glaube Du musst die POST Variablen löschen.
    PHP-Code:
    $_POST['FORM_SUBMIT'] = ''
    oder, contao konformer:
    PHP-Code:
    $this->Input->setPost('FORM_SUBMIT'''); 
    Wenn das nichts hilft, die Session dazu:

    Über die Sessions Klasse von Contao gehen:

    PHP-Code:
    $this->import('Session');
    $this->Session->set('FORM_SUBMIT'''); 
    Die kompletten Session Daten löschen:
    PHP-Code:
    $this->Session->setData(array()); 
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard

    Danke sehr - das hat geholfen ... dabei ist mir allerdings noch ein anderes Problem aufgefallen.

    Die Seite beinhaltet insgesamt 3 mehrseitige (7 Seiten) Formulare, die sich inhaltlich sehr ähnlich sind, aber eben nicht genau.

    Fängt ein User an, ein Formular auszufüllen und bricht dann den Vorgang ab und wendet sich einem anderen Vorgang zu, dann
    befinden sich die bisherigen Daten noch in der Session und werden leider auch bei Formular 2 dann aus der Session gelesen, obwohl
    sie zu dem anderen Formular gehören ...

    Und ich habe gerade keine Idee, wie ich diese Überschneidung lösen könnte.


    Danke schonmal

    Mark

  4. #4
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard

    Kann man eventuell nachvollziehen, aus welcher FormularID die Daten in der Session stammen? Beim Umschalten auf ein anderes Formular könnte man dann abfragen, ob die Session-Form-Data zum aktuell angezeigten Formular passen oder nicht.


    mark

  5. #5
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Mark Knochen Beitrag anzeigen
    Kann man eventuell nachvollziehen, aus welcher FormularID die Daten in der Session stammen? Beim Umschalten auf ein anderes Formular könnte man dann abfragen, ob die Session-Form-Data zum aktuell angezeigten Formular passen oder nicht.


    mark
    Aber natürlich. Im wiki ist das auch beschrieben.
    Vergebe in den Formular-Einstellungen unten eine Formular-ID, diese wird dann als FORM_SUBMIT verwendet.
    Aber selbst wenn das Feld leer ist, ist jedes Formular einzigartig. Dann sieht die FORM_SUBMIT Variable in etwa so aus: auto_form_NUM_ID_DES_FORMS (z.b. auto_form_1).

    Musst die Sachen mal durch firephp jagen, oder printen.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  6. #6
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard

    Zitat Zitat von Tim G Beitrag anzeigen
    Aber natürlich. Im wiki ist das auch beschrieben.
    Vergebe in den Formular-Einstellungen unten eine Formular-ID, diese wird dann als FORM_SUBMIT verwendet.
    Aber selbst wenn das Feld leer ist, ist jedes Formular einzigartig. Dann sieht die FORM_SUBMIT Variable in etwa so aus: auto_form_NUM_ID_DES_FORMS (z.b. auto_form_1).

    Musst die Sachen mal durch firephp jagen, oder printen.

    Und die hilft dabei, verschiedene $_SESSION['FORM_DATA'] zu bilden?

    Wie ist das eigentlich mit mehreren gleichzeitigen Zugriffen aus einem Firmennetzwerk mit nur einer IP nach draußen ...
    (vielleicht ist das aber auch falsch gedacht) .... die $_SESSION wird dann für jeden "Rechner" oder für die IP des Firmennetzwerkes erstellt?
    Mir kommt die Frage irgendwie selbst komisch vor, vielleicht habe ich auch zu wenig geschlafen ...


    Danke

    Mark

  7. #7
    Contao-Fan Avatar von tom
    Registriert seit
    16.06.2009.
    Ort
    Ludwigsburg
    Beiträge
    385

    Standard

    Hallo Mark,
    Zitat Zitat von Mark Knochen Beitrag anzeigen
    Und die hilft dabei, verschiedene $_SESSION['FORM_DATA'] zu bilden?
    nein, die in der Session gespeicherten Formulardaten sind nicht formularspezifisch, sondern ein Array à la
    PHP-Code:
    $_SESSION['FORM_DATA'] => array(
      
    'firstname' => 'Max',
      
    'lastname' => 'Mustermann',
      
    'email' => 'max@mustermann.net'
    ); 

    Zitat Zitat von Mark Knochen Beitrag anzeigen
    Wie ist das eigentlich mit mehreren gleichzeitigen Zugriffen aus einem Firmennetzwerk mit nur einer IP nach draußen ...
    (vielleicht ist das aber auch falsch gedacht) .... die $_SESSION wird dann für jeden "Rechner" oder für die IP des Firmennetzwerkes erstellt?
    Mir kommt die Frage irgendwie selbst komisch vor, vielleicht habe ich auch zu wenig geschlafen ...
    ja, da fehlt wohl eher Schlaf :-)
    Die Session hat nichts mit einer IP oder einem Rechner zu tun. Es wird (Standard-Einstellung) per Cookie eine SessionID gespeichert (i.d.R. Schlüssel 'PHPSESSID').

    Schöne Grüße
    Tom

  8. #8
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard

    ah, mir kam es ja auch gleich so komisch vor - 2 Wochen mit 70 / 80 Stunden Arbeit gehen dann doch an die Substant

    Das mit den SESSION[FORM_DATA] habe ich jetzt folgendermaßen gelöst ... es sind ja alles mehrseitige Formulare - insgesamt 3 mit 7 Seiten ...

    Ich vergleiche beim Aufruf der Formulare jeweils folgendes:

    if(basename($_SERVER['HTTP_REFERER']) != basename($_SERVER['REQUEST_URI']))
    {
    unset($_SESSION['FORM_DATA']);
    $this->Input->setPost('FORM_SUBMIT', '');
    $_POST['FORM_SUBMIT'] = '';


    $this->import('Session');
    $this->Session->set('FORM_SUBMIT', '');

    $this->Session->setData(array());
    }

    damit wird beim erstmaligen Aufruf eines Formulares die Session gelöscht - ist das schlüssig bzw. praktikabel? Da die mehrseitigen
    Formulare ja auf der selben Seite laufen, sind schon bei Seite 2 oder einem vergessenen Pflichtfeld auf Seite 1 die beiden
    $_SERVER Variablen gleich und die Session wird nicht gelöscht ..

    Mark


    Zitat Zitat von tom Beitrag anzeigen
    Hallo Mark,


    nein, die in der Session gespeicherten Formulardaten sind nicht formularspezifisch, sondern ein Array à la
    PHP-Code:
    $_SESSION['FORM_DATA'] => array(
      
    'firstname' => 'Max',
      
    'lastname' => 'Mustermann',
      
    'email' => 'max@mustermann.net'
    ); 


    ja, da fehlt wohl eher Schlaf :-)
    Die Session hat nichts mit einer IP oder einem Rechner zu tun. Es wird (Standard-Einstellung) per Cookie eine SessionID gespeichert (i.d.R. Schlüssel 'PHPSESSID').

    Schöne Grüße
    Tom

  9. #9
    Contao-Fan Avatar von tom
    Registriert seit
    16.06.2009.
    Ort
    Ludwigsburg
    Beiträge
    385

    Standard

    Hallo Mark,
    Zitat Zitat von Mark Knochen Beitrag anzeigen

    if(basename($_SERVER['HTTP_REFERER']) != basename($_SERVER['REQUEST_URI']))
    {
    ....

    $this->Session->setData(array());
    ....

    }

    damit wird beim erstmaligen Aufruf eines Formulares die Session gelöscht - ist das schlüssig bzw. praktikabel?
    dadurch löschst Du allerdings nicht die in der Session gespeicherten Daten aus Formularen, sondern andere in der Session gespeicherte Variablen (z.B. referer oder auch Login-Status).
    Über die Session-Klasse hast Du nur Zugriff auf $_SESSION['FE_DATA'] (im Frontend) bzw. $_SESSION['BE_DATA'] (im Backend).
    Die Formulardaten sind allerdings in $_SESSION['FORM_DATA'] gespeichert. (Weitere von/für EFG befinden sich ggf. in $_SESSION['EFP'])

    Was Du zu erreichen versuchst wird eigentlich von EFG bei mehrseitigen Formularen "von Haus aus" erledigt.
    Sobald eine Formularseite eines mehrseitigen Formulars NICHT per "Weiter" / "Zurück"-Button dieses Formulars aufgerufen wird (somit kein POST...),
    werden zunächst die ggf. in der Session gespeicherten Formulardaten (der Felder dieser Formularseite) gelöscht; somit die Felder nicht aus der Session befüllt.

    Ist bei Dir evtl. noch eine Erweiterung im Einsatz, die die Formularfelder (woher auch immer) dennoch befüllt?
    Oder sind die Werte vielleicht nicht wirklich im HTML-Quellcode vorhanden, sondern per Browser-Plugin ausgefüllt?

    Schöne Grüße
    Tom

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •