session updaten oder neusetzen

03/25/2017 02:27 Guron#1
Grüßt euch,
ich arbeite gerade an einer Mitgliederliste im ACP. Administratoren mit dem Rang 4 können die Liste betreten und andere Mitglieder deranken. Wenn ich jetzt aber einen Account mit administrativen Rechten deranke bleibt die Session verständlicherweise solange bis die Session ausgelaufen ist. Gibt es Möglichkeiten, dass ich die Session eines users updaten oder beenden kann?

Ich habe mir bereits überlegt ob ich jeden eingeloggten User eine Sessionid zuweise und diese dann in einer Abfrage lösche. Existiert die Sessionid nicht mehr wird der user automatisch ausgeloggt. Das würde mein Derank Problem lösen. Dennoch ist es keine universallösung, denn die Profilbilder laufen ebenfalls über Sessions und diese müssten man dann updaten.. Kann mir da jemand helfen?
03/25/2017 03:06 florian0#2
Wieso stehen deine Permissions überhaupt in der Session? Die Session sollte lediglich den eingeloggten Nutzer zuverlässig identifzieren, aber ihn nicht beschreiben.
Die Session sollte nur Session-relevante Daten wie Login-Zeitpunkt, ggf. IP und andere Identifikationsmerkmale abspeichern. Rechte, Bilder, etc. sind ein Fall für die Datenbank. Ein Query mehr oder weniger tut da nicht weh.


Natürlich kannst du auch die Session des geändeten Benutzers beenden. Dazu brauchst du lediglich eine Sessionliste parallel in der Datenbank, in der die PHP-Sessions ebenso eingetragen werden. Dein CMS muss dann eben bei jedem Aufruf in der DB prüfen, ob die PHP-Session noch aktiv ist.
03/25/2017 09:45 Guron#3
Quote:
Originally Posted by florian0 View Post
Wieso stehen deine Permissions überhaupt in der Session? Die Session sollte lediglich den eingeloggten Nutzer zuverlässig identifzieren, aber ihn nicht beschreiben.
Die Session sollte nur Session-relevante Daten wie Login-Zeitpunkt, ggf. IP und andere Identifikationsmerkmale abspeichern. Rechte, Bilder, etc. sind ein Fall für die Datenbank. Ein Query mehr oder weniger tut da nicht weh.


Natürlich kannst du auch die Session des geändeten Benutzers beenden. Dazu brauchst du lediglich eine Sessionliste parallel in der Datenbank, in der die PHP-Sessions ebenso eingetragen werden. Dein CMS muss dann eben bei jedem Aufruf in der DB prüfen, ob die PHP-Session noch aktiv ist.
Hab bisher den User IMMER über die Session beschrieben, aber nie wirklich genutzt. Im nachhinein stellt sich das vielleicht doch sogar als blöd heraus.

Ich werd' mal schauen was ich machen kann, danke!

Edit:
Habs umgesetzt. Falls es wem hilft: In meiner Query nutze ich immer den Faktor der userid und fetche dann die Ergebnise und kann sie dann ausgeben. Bspw:

PHP Code:
<?php 
$userquery 
$system->query("SELECT * FROM anime_users WHERE id = '"$_SESSION['id'] . "'");
$user $userquery->fetch_assoc();

echo 
$user['rank'];
?>
03/25/2017 15:26 sven12345#4
Verwende für deine querys am besten prepared statements (aufgrund von SQL-Injection) --> Ist sonst eine riesen Sicherheitslücke

Hier der Link: [Only registered and activated users can see links. Click Here To Register...]