Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Session von außen löschen?

Hi Leute,

ich hab da eine "kleine" Frage:
Kennt jemand eine Möglichkeit, eine Session die ein User erstellt hat von außen als Admin zu löschen bzw. zu sperren?


Ein fall in der Praxis:
Ich bin Administrator von einem Forum und sperre einen Benutzer.
Jetzt ist der Benutzer dann aber trotzdem noch online und kann bis zu einem neue Login weiterhin alle Funktionen ausführen.

Ich suche also eine Funktion die die Session die der Benutzer beim einloggen erstellt hat, zu löschen damit er automatisch rausfliegt. Bei einem anschließenden Login wäre er dann ja gesperrt und könnte nichts mehr machen.
Wichtig ist, dass ich hierbei aber keine DB-Abfrage machen will in der gecheckt wird ob der Benutzer evtl. gesperrt ist.


Kennt hierfür jemand eine Möglichkeit?

Danke im Vorraus!
Gruß
Vanger

Hier gehts zum Orginal Eintrag "Session von außen löschen?" im Forum

Antworten

Ohne eine zusätzliche Abfrage würde mir da nur einfallen die entsprechende Session im Ordner auf dem Server zu löschen (sofern du sie überhaupt erstmal kennst). An den wirst du aber wahrscheinlich nur rankommen, wenn du einen eigenen Server hast.....


2.

Hi,

jup ich habe einen eigenen Server
Rauszufinden wie die Session lautet wird kein Problem sein!

Kannst du mir bitte sagen in welchem Verzeichnis die Sessions gespeichert werden? (Standardmäßig)

Gruß
Vanger


3.

Such mal in deiner php.ini nach session.save_path. Meist wird es ein Ordner namens /tmp oder /php_tmp oder oder ... sein


4.

super!
hab die files gefunden
dankeschön!

Gruß
Vanger


5.

Also PHP den Teppich unter den Füssen, also die Session von der Platte zu reissen ist schon etwas hart, oder?

Wäre es nicht besser das Verwaltungs-Programm entsprechend zu modifizieren, dass User vom Admin zwangsausgeloggt werden können?
D.h. z.B. bei der Authentifizierungsroutine den Status in der Datenbank auslesen, wenn der Admin den User sperrt, kann der Benutzer auf eine eigene Seite gelotzt werden z.B. "Ihr Benutzerkonto wurde gesperrt".

Ich würde sagen das ist besser als div. Fehlermeldungen "undefined index" etc. am Bildschirm zu haben, und dass so die Seite in einen nicht definierten Zustand fällt.


6.

Naja, undefined index wird kaum kommen. PHP findet die Session Daten nicht, also hat man eine leere Session.


7.

Trotzdem ist die Lösung saublöd. Sich auf die Infrastruktur von PHP zu verlassen und dem Sessionmanagemant den Teppich unter den Füßen wegzuziehen ist NICHT konform zur API die PHP zur Verfügung stellt - es ist einfach grottenschlecht.

Die Formulierung "trotzdem ist der User noch Online" legt ja nahe, dass die Prüfung, ob überhaupt ein User "Online" ist, einfach zu doof ist - nämlich lediglich das Existieren einer Sessionvariablen erfordert. Diese Prüfung braucht man lediglich um die Abfrage zu erweitern, ob der User überhaupt noch in der Userdatenbank steht o.ä. - und schon ist es schei*egal, ob da noch irgendwo eine Session herumfliegt.


8.

Hi,

@poppi: So weit ich das mal verstanden habe, führt session_destroy() ein und das selbe aus: Die jeweilge Datei der Session wird gelöscht und somit existieren keine Daten mehr.
Damit wird die Session unbrauchbar und der User fliegt raus!
(Bitte berichtige mich wenn ich was falsch verstanden habe!)

Eine Fehlermeldung like "undefined index" o. Ä. kommt nicht - Habe es ja schon ausprobiert! Wieso: siehe oben

=================================================================================================

@Rana: Es wird gecheckt ob der User noch online sein kann. Die Session wird nur gelöscht, wenn eine entsprechende überhaupt noch existiert (Sprich: User noch online oder offline?)
Wenn die Session wegen logout und/oder timeout gelöscht wurde, wird das script nicht versuchen, ein file zu löschen, das gar nicht mehr existiert.

Oder konkret: Die Sache mit dem Session löschen wird nur durchgeführt wenn der User noch online ist

=================================================================================================

Allgemein: Wenn jemand eine schönere und vor allem konforme Idee findet, die keine Verbindung zur DB benötigt (Das Script ist kein Forum sondern etwas komplizierteres und benötigt schon von Grund auf viel zu viele DB-Abfragen - Die versuchen wir zu minimieren) würde ich mich darüber sehr freuen.

Gruß
Vanger


9.

es wäre genau eine db-abfrage...und die abfrage des status eine benutzers halte ich nicht für performance-drückend...

und wenn das "geheimnisvolle komplizierte skript" schon soviele db-abfragen hat, dann würd ich eventuell nochmal das design überarbeiten oder das db-modell checken...

ich würde das ganze in die user-prüfung stecken...dort wirst du doch eh eine abfrage an die db haben, um etwas über den user zu erfahren...


10.

Zitat:
Oder konkret: Die Sache mit dem Session löschen wird nur durchgeführt wenn der User noch online ist
Ach je, gäääähn. Es GIBT KEIN "ONLINE SEIN". Diese Lösung ist und bleibt grottenschlecht. Und sie wird es so lange bleiben, bist Du verstehst, dass es kein "online sein" gibt. Davon bist Du offensichtlich noch ein gutes Stück entfernt.


Hier gehts zum Orginal Eintrag "Session von außen löschen?" im Forum
 
phpforum.de | Impressum