ich habe ein portal mit php und mysql programmiert. als benutzergruppen gibt es admins und user. die user können auf daten zugreifen, die der admin jederzeit ändern kann.
nun möchte ich folgendes realisieren: der admin kann
1) wenn kein user online ist, ein zeitfenster einrichten, indem beim einloggversuch der user eine meldung kommt, dass gerade administrative arbeiten durchgeführt werden.
2) notfalls alle user, die gerade online sind "hinauswerfen".
ich muss praktisch eine variable setzen, auf die jeder zugreifen kann, sie muss also serverseitig sein. ich habe da entweder an eine textdatei oder an eine eigene sql-tabelle gedacht.
wie würdet ihr das machen?
lg, max
admin soll user "hinauswerfen können"
-
-
Du meinst also, daß die Seite einfach anzeigen soll, daß eine Arbeit vom Admin durchgeführt wird? Naja ... Du könntest z.B. in einem Frame (mit 1px Höhe) ein Skript laufen lassen, das nachschaut, ob der (die) User rausgekickt werden sollen, und wenn das der Fall ist z. B. mit einem JavaScript-Befehl eine Message an den User schicken oder überhaupt das Fenster schließen, oder neu laden.
Geht der Tipp in die richtige Richtung?
-
das wäre eine möglichkeit (aber dann würde ich den frame 0px groß machen)
eine andere möglichkeit wäre es, bei jedem seitenwechsel, den der user ja vornen muss, wenn er eingeloggt ist und etwas arbeitet und überprüfen ob in der datenbank ein eintrag für gesperrt steht oder nicht... da tretten aber jetzt meherer probleme auf, wenn ein der admin vergisst, die sperrung aufzuheben, kann kein user mehr rein... (also vieleicht darauf achten, dass die sperrung nur eine gewisse zeit aufrecht bleibt!), da gibts auch wieder mehrere möglichkeiten... entweder setzt du beim sperreintrag die uhrzeit dazu oder die id des benutzer der die sperrung durchgeführt hat, und bei diesem wird dann ein eintrag der letzten seitenaktivität gesetzt... (kann ja im gleichen zuge durchgeführt werden wie die überprüfung, auf sperrung)...
ein ganz anderes problem ist aber die performance... ich kann darüber nur schwer angaben machen, ich denke mir halt, das durch die ständigen datenbankzugriffe der server etwas mehr gefordert wird... -
am besten glaub ich wäre es in die login funktion vorher eine zwischen abfrage einzubauen, welche in der datenbank nachschaut, ob nicht gerade wartungsarbeiten stattfinden.
:thumb: -
ich dachte, dass ist eh klar... (wie's so schön in meiner mathevorlesung immer heißt *fg*)
das größere problem sind die user, die schon eingeloggt sind... im prinzip müsstest du bei jedem seitenwechsel überprüfen ob wartungsarbeiten im gange sind... -
danke für eure anregungen.
habe jetzt in einer mysql-table 2 attribute: TimestampVon und TimestampBis. der admin kann in einer dropdownliste zwischen 5 und 40 minuten auswählen, die dann in diese table eingetragen werden.
auf jeder seite (auch beim login natürlich) der user wird nachgeschaut, ob der aktuelle timestamp innerhalb des zeitfensters vom administrator liegt. wenn ja, wird der user ausgeloggt und ein hinweis gegeben, dass er sich in x minuten wieder einloggen soll.
frames und javascript möchte ich immer möglichst vermeiden.
lg, max -
was eingeloggte benutzer betrifft, du könntest die session_ids in einer tabelle speichern, und wenn admin die website sperrt, diese sessions dann zerstören
mfg
ICE
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!