[PHP|MySQL] Session oder DB

Rain

Lieutenant
Registriert
Mai 2003
Beiträge
704
Hi! Ich programmiere jetzt schon seit paar Wochen an einer webbasierten Verwaltung für meine Firma. Momentan bin ich dabei Alles in ein finales Layout zu bringen. Ich dachte mir dann, dass es eine gute Idee wäre, auch das User-Level-System zu überarbeiten, also Beschränkungen, wer darf was sehen und was bearbeiten. Momentan habe ich lediglich 4 vordefinierte Benutzergruppen (admin, super, normal, eingeschränkt), welche mir jetzt aber gar nix mehr bringen, da ich detailiertere Zugriffsoptionen brauche, sozusagen für jeden Link soll geprüft werden, ob der User ihn sehen darf oder nicht.

Ich würde ganz gerne einfach mal Meinungen hören, was denn besser ist:

Auf jeder Seite

1.) per MySQL-DB aus einer Benutzer-Tabelle abfragen ob der User Zugriff auf dem Link hat (spalte "link1" 1 (ja) oder 0 (nein))

oder
2.) per Session-Array prüfen ob zB $_SESSION['link1'] gesetzt ist / den Wert 1 hat etc.

Also grob gesagt: Sessions oder DB?

Ich könnte mir vorstellen dass die Serverbelastung bei DB höher wäre, jedes mal ne Abfrage zu starten, wobei aber: Ist die Belastung denn wirklich so hoch?

Sessions sind mir irgendwie so ne Sache... ich schicke schon 2-3 andere Sachen über das Session-Array die ganze Zeit mit. Mir ist es leider schon manchmal untergekommen, dass plötzlich nach einem normalen Klick auf einen normalen Link das Session-Array sich plötzlich entleert hat scheinbar, obwohl diese "Session-Ablaufzeit" noch nicht zuende war. Sollte das Session leer sein, wird man zur Login-Seite geschickt, diese Sicherung hab ich schon bedacht, trotzdem bin ich mir bei der Verwendung von Sessions noch unsicher irgendwie.

Vielleicht hat jemand ja nen Tipp
 
momentan wird beim login geschaut, welche der gruppen der user angehört und dieser wert in $_SESSION['benutzertyp'] geschrieben. auf den jeweiligen seiten wird dann an entsprechenden stellen per if geprüft ob user was (sehen) darf oder nich
 
hm, dann hast du doch schon deine überprüfung, so mach ich das auch immer. Sessions sind eigentlich genau dafür da. Oder versteh ich gerade was falsch.
 
ich wollte wissen was von der performance und allgemeinen verfahrensweise "besser" wäre.

würde auch gerne weiter mit session arbeiten, hab halt bei anderen projekten mit dem sessions paar schlechte erfahrungen gemacht. da hat das session-array plötzlich nach nem normalen klick auf nen link keine daten mehr gehabt. ok, zugegeben, ich habe es da vielleicht etwas übertrieben, hab wirklich alles an daten in das session-array gelegt (war eine art rpg mit gui ^^, sessions hab ich da grad neu entdeckt für mich). bei meinem jetzigen projekt ist es vllt insgesamt nur 2 mal bis jetzt passiert, aber trotzdem hab ich bei der verwendung von session ein komisches gefühl.
 
ich würde das kombinieren. auf der startseite die abfrage über das pw und aus der DB wird dann entnommen, was der jeweilige darf.
dann läuft das alles mit sessions weiter.

weil sonst musst du es ja auf jeder seite vom neuen mit der DB abfragen oder irre ich mich grade
 
ja, das ist die frage: bei jeder seite von neuem abfragen von der db, ob das eine vorteilhaftere alternative wäre
 
Also ich frage sowas immer direkt beim Login mit ab und knall das dann in SESSIONS (username, rechte). ende aus nikolaus. das immer über die DB abzufragen ist schwachsinn. und last bringt das keine auf die DB wenn da nicht grad 100 leute auf der seite rumeiern
 
also ist das euch noch nie passiert, dass mir nix dir nix plötzlich das session-array leer war?
 
die frage ist, wie du das mit der DB abfrage überhaupt anstellen willst?
entweder du musst bei jedem neuen seitenaufruf ein formular mit username und passwort mitgeben, oder die daten in getvariablen schreiben, was schwachsinn ist .... und dann sind wir schon wieder bei den sessions :)

also beim login die datenbank abfragen, wenn der benutzer berechtigt ist, dann die daten ab in die session ... und wenn die session zerstört wird, dann musst halt wieder einloggen, oder du baust noch cookies ein, da würd ich aber wiederum nur beim ersten mal die cookies abfragen und dann in die session speichern.

also:
- schaun ob session aktive -> wenn ja, alles gut
- wenn keine session -> schaun ob cookies vorhanden
- wenn cookies vorhanden
-> daten mit deiner DB abgleichen
benutzer berechtigt -> daten in session speichern
benutzer nicht berechtigt -> ab zum login
- wenn keine cookies vorhanden -> ab zum login

=> logout = session zerstören
 
hm, umso länger ich über den thread nachdenke, desto beknackter kommt mir die frage irgendwie selber vor. ich hoffe einfach mal, dass sich meine sorgen in luft auflösen bzgl. der sessions.

ich kanns jetzt noch nicht abschätzen, aber auch wenns 20-30++ sachen sind, die ich mit dem session-array transportiere, kein problem?
 
eigentlich sollte es kein problem mit den sessions geben. also mir ist das noch nie passiert.

falls das bei dir auftritt musst du ma gucken ob du nicht irgendwo versehentlich nen session_destroy(); machst
 
Zurück
Oben