Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Session und Browser-Back-Button

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Session und Browser-Back-Button

    Schönen guten Abend,

    für eine Umfrage an meiner Schule habe ich ein kleines system gebastelt. Die zu befragenden loggen sich ein, füllen den Fragebogen aus, die Daten kommen in meine Datenbank und die Benutzer werden ausgeloggt.
    Es funktioniert bereits alles bestens, allerdings gibt es ein Problem. Nachdem der fragebogen abgeschickt wurde, wird die session beendet. In der Datenbank wird daraufhin der Benutzer gesperrt (damit nur ein mal abgestimmt werden kann). Wenn ich jetzt aber die Zurück-Taste des browsers drücke, Gelange ich trotz sessionabfrage zurück zu meinem Formular. Refreshe ich die Seite, bekomme ich hingegen die gewünschte Fehlermeldung.

    Hat jemand von euch eine Idee, wie ich das regeln kann?

    Gruß,
    Varta


  • #2
    Das liegt am Cache vom Browser. Da kannst du nix machen. Wenn du aber in der Datenbank sagst der User hat das Formular schon abgeschickt sollte das eigentlich kein Problem sein und eine Änderung der Ergebnisse ist unmöglich.
    - Laravel

    Kommentar


    • #3
      Eigentlich sollte es sich dabei aber um eine anonyme Umfrage handeln. Momentan verwende ich zwei Tabellen. In einer stehen die Benutzer, in der anderen die Ergebnisse. Es gibt jedoch keine logische Verbindung zwischen Ergebnis und Benutzer, die Ergebnisse sind einfach mit IDs versehen.

      Wenn es keine Möglichkeit gibt, das anders zu schaffen, war es das wohl mit der Anonymität

      Kommentar


      • #4
        Hä also ich sehe da eine logische Verbindung (nennt sic 1:1 relation)

        Annonym ist nur die Ergebnisse zu zählen und nur speichern ob ein User schon abgestimmt hat
        Fatal Error: Windows wird gestartet

        Wie administriert man ein Netzwerk: Beispiel

        Kommentar


        • #5
          hast recht, ich habe da gerade einen Denkfehler gemacht.

          Also denkbar wäre es doch, den Benutzernamen in einer Sessionvariable zu speichern und dann beim übergeben der Daten zu prüfen, ob dieser Benutzer noch teilnehmen darf, oder? wenn nicht, wird er einfach umgeleitet

          Kommentar


          • #6
            Eine Session ist spezifisch für jeden User. Der User kann ich also einfach eine neue Session machen und schon kann er wieder abstimmen.
            Fatal Error: Windows wird gestartet

            Wie administriert man ein Netzwerk: Beispiel

            Kommentar


            • #7
              auch wenn er sich vorher einloggen muss und ich den Namen des Logins als Sessionnamen nehme?

              Kommentar


              • #8
                Also ich weiß nicht so ganz genau was du damit meinst, aber ich erzähle dir einfach mal wie ich es machen würde.

                Hier mal für nur eine Abstimmung, aber man kann es natürlich auch auf mehrere erweitern, es braucht dann eben ein paar mehr tabellen

                Eine Tabelle mit den usern (id, name, passwd, abgestimmt)

                Einen login solltest du damit hinbekommen.

                Dann eine tabelle für die Abstimmung mit den spalten als auswahlmöglichkeiten.

                Wenn ein User abstimmt wird geprüft ob er bereits abgestimmt hat (was er abgestimmt hat bleibt anonym) wenn nicht wird seine Abstimmung dazugezählt und er wird als abgestimmt gekennzeichnet. Wenn er es schon getan hat, dann passiert einfach nichts.
                In der Session sollte dann also nichts weiter stehen als die User id des eingeloggten User
                Fatal Error: Windows wird gestartet

                Wie administriert man ein Netzwerk: Beispiel

                Kommentar


                • #9
                  Ja so in etwa habe ich mir das sogar vorgestellt

                  Ok danke, ich werde das später mal versuchen

                  Kommentar

                  Lädt...
                  X