Seite 1 von 1

Variablen sichern

Verfasst: Do Apr 02, 2009 2:33 am
von Jside
Mal eine Frage, ich bastle gerade an einem CMS, nun habe ich eine Funktion eingebaut, mitder man die Seite "sperren" kann(alle Anfragen enden auf einer Seite, aufder steht, das an dem Server gerade Configurationen vorgenommen werden) Jetzt will ich aber, das wenn z.b. ein User etwas ediert hat, das dies nicht verloren geht(da bei der Sperrung z.b. angenommen wird, das die Datenbank geupdatet wird, kann ich das zeug natürlich nicht abspeichern). Bei den $_GET Variablen(Das CMS besteht aus leeren Seiten, deren Inhalt aus einer Datenbank gelesen wird) kein Problem, wie aber bei den $_POST Variablen(Beiträge, Login etc?)

Ich könnte diese Clientseitig in einer unsichtbaren Form verstauen, wobei allerdings das Risiko besteht, das der Client statt auf den Refresh Button auf der Seite den richtigen Refesh Button klickt, oder den Tab schließt. Also wie kann ich $_POST Variablen mit unterschiedlichem Inhalt Serverseitig abspeichern, sodass, wenn man als Admin auf den Button zum wiederfreigeben drückt, diese Verarbeitet(Login's natürlich nicht) werden?

Mit SESSIONS ja wohl nicht...

Re: Variablen sichern

Verfasst: Do Apr 02, 2009 10:33 am
von Dubbel
Ich verstehe dein Problem noch nicht so ganz:
Du hast ein CMS, bei dem man Seiten sperren kann.
Ruft irgendjemand diese gesperrte Seite auf, dann erscheint "Server configuration" oder so.

Doch nun kommts: Warum sollte ein Benutzer diese Seite verändern können? Bzw. dies nicht können, weil bei einer gesperrten Seite _angenommen_ wird, dass die DB geupdated wird. Würde es nicht reichen, einfach nur zu schreiben, dass die Seite gesperrt ist? Und warum sollte das, was der User schreibt, nicht in die DB geschrieben werden? :?

Re: Variablen sichern

Verfasst: Do Apr 02, 2009 10:50 am
von Jside
Dubbel hat geschrieben:Ich verstehe dein Problem noch nicht so ganz:
Du hast ein CMS, bei dem man Seiten sperren kann.
Ruft irgendjemand diese gesperrte Seite auf, dann erscheint "Server configuration" oder so.

Doch nun kommts: Warum sollte ein Benutzer diese Seite verändern können? Bzw. dies nicht können, weil bei einer gesperrten Seite _angenommen_ wird, dass die DB geupdated wird. Würde es nicht reichen, einfach nur zu schreiben, dass die Seite gesperrt ist? Und warum sollte das, was der User schreibt, nicht in die DB geschrieben werden? :?
Also wenn der User nen Fetteren Text geschrieben hat, und den dann absendet, und dann eine Meldung kommt, das der Server gewartet wird, ist das ja nich so toll. Sowas hatte jeder schonmal, man schreibt ne Weile an was, und plötzlich soll man sich neu einloggen, weil die Sitzung abgelaufen ist, und der Text ist weg. Hier daselbe, nur mit einer Serverwartung. Ich möchte jetzt das die Daten in dem Fall irgendwie abgespeichert werden, sodass diese in die Database geschrieben werden, sobald die Seite wieder entsperrt/fertig geupdatet ist. Andernfalls natürlich direkt in die Database.

Ich könnte jetzt zwar die Funktion zum sperren so einrichten, das diese erst ausgeführt wird, wenn alle Sitzungen beendet wurde, was aber den Nebeneffekt hat, das manche sich nicht ausloggen, und die Sessions keine Ablaufzeit haben.

Kurtz gesagt: Ich möchte dem User die Ärgerniss ersparen ;).

Re: Variablen sichern

Verfasst: Do Apr 02, 2009 2:59 pm
von Xin
Jside hat geschrieben:Ich könnte jetzt zwar die Funktion zum sperren so einrichten, das diese erst ausgeführt wird, wenn alle Sitzungen beendet wurde, was aber den Nebeneffekt hat, das manche sich nicht ausloggen, und die Sessions keine Ablaufzeit haben.

Kurtz gesagt: Ich möchte dem User die Ärgerniss ersparen ;).
Eine Session kann ja ablaufen, aber wiederbelebt werden.
So kannst Du auf der Platte die Daten speichern unter dem Namen der Session. Loggt sich der User ein, guckst Du nach, ob Du was unter dieser Session auf der Platte hat und stellst die Seite wieder her.
Sollte der User sich wieder anmelden, ohne dass er die Session-Information noch hat, schaust Du in Deiner Datenbank nach, wie die alte Session hieß und ob unter diesem Eintrag noch was auf der Platte ist. Dann kannst Du ihm nach dem Anmelden anbieten, eine Seite mit Daten wiederherzustellen, die durch die Wartung des Servers nicht verarbeitet wurde.
Veraltete abgebrochene Sessions, z.B. wenn nach 48 Stunden sich dafür keiner mehr interessierte, kannst Du ja löschen.

Re: Variablen sichern

Verfasst: Do Apr 02, 2009 4:53 pm
von cloidnerux
Oder du hast Textdatein auf deinem SERVER, in einer Kommt der Text den der SUer geschriben hat, zusammen wie mit unkritischen Informationen wie username und Datum, etc.. Diese Datei hat dan ein bestimmtes präfix wie "temp_save__<USERNAME>_<ID>.txt" oder so. Wenn sihc jezt ein Nutzer wieder Anmeldet, wenn der Server wieder frei sit, dann wird gescahut ob eine Solche Datei vorhanden ist und es erscheint ein Dialog ob man dann den text ncoh Spiechern will oder ihn nochmal Edietieren will, oder er wird autoamtisch in die Datenbank Transportiert. Dann löschst du die Datei.

Re: Variablen sichern

Verfasst: Do Apr 02, 2009 6:36 pm
von Dirty Oerti
Ich kenn mich da nicht so groß aus, aber du könntest es auch über eine 2. Datenbank (a la "Lost & Found") ablaufen lassen.
Das jede Seite, in der ein langer Text entstehen könnte bei einer Serverwartung den Text in diese Datenbank zusammen mit Informationen über Benutzer, Zeitpunkt, Seite schreibst.

Du darfst dann nur nicht beide Datenbanken auf einmal warten^^

Re: Variablen sichern

Verfasst: Fr Apr 03, 2009 4:39 pm
von Jside
Also ich hab jetzt folgende Idee: Die Variablen werden vom Server eingelesen, und entsprechend zu einer fertigen MySQL Funktion als String verarbeitet, diese wird dann in einer *.php Datei in ein Array Geschrieben(immer letzte Zeile(?>) löschen, via setenv/getenv die Größe des Zurzeitigen Array auslesen, und via fprintf(datei, "array[nummer++] = \"ABFRAGE\""); dazuschreiben, und wieder ?> anhängen.)
Dieses wird dann beim Wiedereintritt in die Atmosphäre(=Online gehen) via while Loop eingelesen, und ausgeführt, das hat den Vorteil, das ich so nicht für alles ne Extrawurst machen muss, sondern alles angefangen von Registrierungen, bishin zum Update von Informationen alles Zentral nachträglich verarbeiten kann...


....gute Idee??

Re: Variablen sichern

Verfasst: Fr Apr 03, 2009 10:34 pm
von hackmack
ich find die Idee ganz gut. Du musst kannst allerdings nicht alle Daten in so einer Datei speichern. Hat ein User sich gerade registriert, will er sich im oft gleich danach einloggen - dies geht aber nicht, da die Daten noch nicht in der Datenbank sind in der der Login-Teil sucht. Sofern eignet sich das System eigentlich nur für Daten, welche nicht sofort danach ausgelesen bzw. bearbeitet werden müssen, sondern erst nach gewisser, undefinierter Zeit (dann wenn der Admin mit der Wartung fertig ist).

Eine ganz andere Idee wäre (dadurch hat der User zwar wieder etwas Aufwand, aber du hast das Problem mit den Daten nicht), dass ein Ajax-Script regelmäßig schaut, ob der Server nicht gesperrt ist. Ist der Server gesperrt, wird an den User, der gerade einen Text schreibt, eine Meldung ausgegeben, dass er den Text bitte noch lokal speichern sollte. Als Sicherheit kann man den Text zusätzlich danach noch auf dem Server in einer Datei speichern... :D