[PHP] Doppelpost verhindern

  • Heyho,


    ich steh gerade vor einem Problem und komme net weiter :D


    Wir müssen in der Schule en Abschlussprojekt mit ner Datenbank machen und meine Gruppe ist total übermotiviert^^. Leider bin ich der einzige PHP-befähigte in dieser Gruppe und damit total überarbeitet xD.
    Teil unseres Projektes ist eine Pinnwand auf der man Infos posten kann.


    Das klappt auch soweit. Es gibt nur ein Problem:
    Drückt man nach dem Posten den F5 Button, fragt er ob die Post-Daten nochmal gesendet werden sollen. Drückt man auf ja, ist der Post 2x auf der Pinnwand. Klassischer DoublePost^^.
    Das ganze könnte man lösen, indem man eine ID im Formular mitschickt. Beim Aufrufen wird diese generiert und beim Abschicken als ungültig markiert. Damit ist das Formular nur einmal nutzbar.


    Frage Nr 1: Wo speichere ich die ID am besten? In der PHP-Session ($_SESSION)?


    Frage Nr 2: Hier im Board funzt das ja irgentwie anders. Ich habe nur SELTEN die Frage, ob ich die POST-Daten erneut verschicken will. Wie geht das?


    (Frage Nr 3: Passt nicht ganz zum Thema aber egal: Ne PHP Session verfällt ja nach ner Zeit. Wenn ich jetzt die Lifetime vom Session-Cookie hochsetze, wie lange bleibt dann die Session auf dem Server erhalten?)


    Gruß
    florian0

  • Wenn du nach dem schreiben (in die DB) den user mit header('Location: ....'); auf eine neue/gleiche seite umleitest "vergisst" der browser die POST-Daten und frag auch nimmer nach (So wird das im Forum hier auch gemacht).


    Session ist grundsätzlich gut um kurzfristig werte zu speichern. Die werden ja am ende der Browser-Session gelöscht.


    Würde trotzdem das mit
    header('Location: ....'); machen. Wichtig ist, dass der befehl vor dem ersten output steht.


  • header('Location: ....'); machen. Wichtig ist, dass der befehl vor dem ersten output steht.


    Ooh ja, man schaut recht dumm drein wenn die Syntax korrekt ist und man keine Ahnung hat warum es nen PHP Error gibt :D


    In der PHP.ini müsste ja wie bei allem nen Standard vorgegeben sein, liegt glaube ich bei 30 Sec, alles was länger sein soll kann dann dazugegeben werden mit ner Funktion (ma googeln) und falls die Session "unendlich gehen soll" wird eine 0 übergeben.


    Drück halt jemandem nen PHP Buch in die Hand und lass ihn lernen, ist nicht schwer und geht recht schnell wenn man sich nicht völlig intelligenzbefreit anstellt.


    Gruß