Ich habe ein Unternehmen Wiki von MediaWiki. Ich habe Code geschrieben, um eine Funktion zum Sperren von Seiten hinzuzufügen, sodass Benutzer, die eine Seite bearbeiten, eine 15-minütige Sperre für die Seite erhalten, die sie zu einem beliebigen Zeitpunkt verlängern können, bevor sie abläuft.Zugriff auf Formular über Browser zurück Schaltfläche löst nicht aus "Formular erneut bestätigen"
Wenn der Benutzer eine Seite bearbeitet und dann auf Speichern klickt und dann auf die Zurück-Schaltfläche des Browsers klickt, um zum Bearbeitungsformular zurückzukehren, sieht alles normal aus und der Benutzer denkt, dass alles in Ordnung ist Erstellen Sie eine neue Sperre auf der Seite. Die Nachricht, die dem Benutzer sagt, hat eine Sperre auf der Seite, aber ich denke, es ist nur, weil es eine zwischengespeicherte Version der Seite ist; Die Ablaufzeit in der Nachricht ist die Ablaufzeit für die Sperre von der ersten Zeit, die sie bearbeitet, nicht mit der Zurück-Taste.
Ich habe versucht, HTML meta
Tags auf der Seite innerhalb der head
Tags, um den Cache ungültig/nicht Cache die Bearbeitungsseite, aber das funktioniert nicht, weil der MediaWiki PHP-Seitengenerator dies überschreibt.
Im Moment habe ich eine sehr schlampige Reparatur; Ich benutze JavaScript, um das Drücken der Browser-Vorwärts-Taste zu simulieren, z. Gehe in der Geschichte auf der Bearbeitungsseite vorwärts. Wenn ein neuerer Historieneintrag nicht existiert (zB Sie haben den eigentlichen "Bearbeiten" -Knopf anstelle des Browser-Zurück-Knopfes angeklickt), tut er einfach nichts, aber wenn er über die Zurück-Schaltfläche auf die Bearbeitungsseite zugreift, zeigt er kurz die Seite an etwa eine Sekunde lang, bis das JavaScript geladen wird und dann in der Historie weitergereicht wird (indem man sie an die Stelle zurückversetzt, wo sie waren, bevor man auf die Zurück-Schaltfläche klickt). Ja, das funktioniert, aber es ist meiner Meinung nach eine sehr schlechte Lösung, da es nicht sehr nahtlos/benutzerfreundlich ist und Benutzer verwirren oder sie denken lassen könnte, dass etwas mit ihrem Browser nicht stimmt.
Eine bessere Lösung wäre, den Benutzer zu zwingen, das Formular erneut einzureichen, wodurch eine "frische" Version der Bearbeitungsseite geöffnet wird, und ich bin mir nicht sicher, warum es das nicht schon tut. Was ich damit meine, ist, wenn der Benutzer die Bearbeitungsseite über den Zurück-Knopf des Browsers aufruft, möchte ich, dass er die Fehlerseite "Formularwiederbestätigung bestätigen" anzeigt. Google Chrome zum Beispiel:
Ich denke, das Problem durch Erzwingen eines Resubmit des Formulars zu beheben, die meiner Meinung nach wird sich dann tatsächlichen Seite Blockier erstellen. Korrigiere mich, wenn ich falsch liege.
Ich denke nicht viel von der Seite Sperrcode ist sehr relevant, denn der Grund für das Problem ist nur, dass die Zurück-Schaltfläche bringt sie zu einer im Cache gespeicherten Version der Seite und nicht eine "frische" Version, aber Wenn Sie anders denken, zögern Sie nicht danach zu fragen. Lassen Sie mich wissen, welche Teile des Codes zu posten sind und ich werde sie hinzufügen.
nach dem Post, verwenden Sie die Umleitung für die gleiche Seite. – devpro
um. Was? Können Sie erklären, was Sie damit meinen? –