Homepage selbermachen 7.851 Themen, 35.615 Beiträge

PHP & MySQL & Sessions & Berechtigungen

Hobbes / 8 Antworten / Baumansicht Nickles

Jetzt wird\'s knifflig ;-)

Ich habe eine MySQL-Datenbank mit ca. 100 Datensätzen gefüllt (Name, Adresse und ein paar weitere Daten).
Nun soll jeder dieser 100 Personen einen username und password bekommen. Damit soll sich dann jeder User einloggen und die komplette Datenbank durchsuchen, jedoch nur seine eigenen Daten verändern können.

Ich nehme an, das muß ich irgendwie mit Sessions & Co. realisieren (mit PHP Lib habe ich schon ein wenig herumgespielt, aber da kann ich nur den Zugriff auf bestimmte Seiten und nicht auf Bereiche der Datenbank beschränken).

Kennt sich jemand damit aus? Oder weiß jemand, wo ich ein fertiges Skript herbekomme oder wo es ein Tutorial / eine Anleitung zu diesem Thema gibt?

Vielen Dank!

Gruß,
Hobbes

bei Antwort benachrichtigen
BloodC@ Hobbes „PHP & MySQL & Sessions & Berechtigungen“
Optionen

Du musst an den Zugriffsrechten überhaupt nichts verändern. Das PHP Script muss vollen Zugriff haben. Es stellt ja fest, welcher user sich mit seinem Password und Username (die speicherst du auch in der Datenbank) angemeldet hat. Dann kann das Script kontrollieren, welche Daten er verändern darf. Der Benutzer baut ja keine direkte Verbingung zur Datenbank auf, sonder das Script tut dies und muss Rechte in vollem Umfang haben. PHP lernt man recht schnell. In drei Tagen hast du damit dieses Problem gelöst. Ein fertiges Script anzupassen dauert da länger, wenn man keine Ahnung hat. Eine deutsche Anleitung gibt es auf www.phpcenter.de! Viel Erfolg! Sollte ich dich nicht richtig verstanden haben, dann schreib einfach nochmal :p

bei Antwort benachrichtigen
Hobbes BloodC@ „Du musst an den Zugriffsrechten überhaupt nichts verändern. Das PHP Script...“
Optionen

Doch, Du hast mich schon richtig verstanden :)
Daß mein Skript vollen Zugriff auf die Datenbank haben muß, war mir schon klar.
Ich kann auch schon mit mysql_connect usw. auf meine Datenbank zugreifen, und ich kann auch via PHPLib & Sessions den Zugriff auf bestimmten Seiten beschränken, aber mein Problem ist bloß:
was muß in einem Skript drinstehen, daß sich die Berechtigungen nicht auf bestimmte Seiten beziehen, sondern auf bestimmte Bereiche der Datenbank.
Denn nach meinem momentanen Wissensstand würde ich das nur hinbekommen, wenn ich für jeden User eine eigene PHP-Seite (bzw. ein eigenes Skript) erstellen würde... aber das waäre dann doch überflüssig aufwendig.

Gruß,
Hobbes

bei Antwort benachrichtigen
Anonym Hobbes „PHP & MySQL & Sessions & Berechtigungen“
Optionen

Hi,

ich weiß nicht genau, ob ich Dir damit helfen kann, aber ich habe so etwas bei PHPMyAdmin erlebt. Mein Webhoster bietet diese Schnittstelle und ich habe nur Zugriff auf meine Datenbank. Die anderen kann ich weder sehen noch darauf zugreifen. Das Prinzip konnte ich zuhause auf meinem Entwickungsserver kopieren, indem ich direkt in mySQL die Benutzer hinzugefügt habe. Das Problem wird aber dann wahrscheinlich sein, daß Du keinen Zugriff darauf hast, oder? Dort kann man genau definieren, was ein Benutzer machen darf und was nicht (nur innerhalb der Datenbank).

Ich greife nochmal Deinen Thread auf:
Komplette Datenbank durchsuchen ist null problemo. Einfach alle Datensätze selecten, vielleicht noch sortieren und ausgeben. Zur besseren Übersicht könnte man auf der Startseite nur den Namen zeigen und eine Detailansicht anbieten. Die Editierung der Daten erfolgt dann nur, wenn der gerade bearbeitete Username, dem des Logins, entspricht. Dann wird ein weiterer Link mit einem Änderungsformular offenbart. Das ist aber die Problematik, die Dir klar ist und die Du bereits gelöst hast, oder? (Ich fange von hinten an, da ich leider nicht ganz Deine Absichten verstanden habe :) )

Was meinst Du mit "bestimmte Bereiche der Datenbank"?
Einen Versuch habe ich schon am Anfang vorgeschlagen. Sonst fällt mir nur ein den Zugriff in dem SELECT-Befehl einzuschränken. Für jeden User müßten also Zugriffsrechte definiert werden, die einen dynamischen SELECT-Query erzeugen. Dieser regelt dann, was ein User sehen darf und was nicht. Sperren kannst Du ganz einfach, indem Du keine Änderungsformulare etc. in der Webseite anbietest.

So, das waren meine spontanten Ideen. Vielleicht helfen sie ja ein wenig...

Archilles

bei Antwort benachrichtigen
Hobbes Anonym „Hi, ich weiß nicht genau, ob ich Dir damit helfen kann, aber ich habe so etwas...“
Optionen

Vielen Dank für Deine Ideen zu diesem Thema!

Du hast es richtig erfaßt: Die ganzen SQL Abfragen auf die Datenbank an sich einzubauen, wird kein Problem sein - jedem angemeldeten User soll es möglich sein, ein Select auf die komplette Datenbank auszuführen (wobei das natürlich über eine schöne Oberfläche realisiert werden wird und der Select-Befehl auf bestimmte Felder der Tabelle begrenzt wird).

Das mit den dynamischen Abfragen ist eine gute Idee - in diesem Fall müßten es allerdings eine dynamische Möglichkeit sein, "insert" oder "update" benutzen zu dürfen.

Das wirklich schwierige daran ist es eben, wie gesagt, mein Skript so zu programmieren, daß jeder angemeldete User Leserechte auf die komplette Datenbank hat (oder zumindest auf einen Großteil der Felder in den Tabellen), aber jeder User nur für seinen eigenen Datensatz Schreibrechte hat.

Mit PhpMyAdmin habe ich auch schon eine Weile experimentiert, allerdings konnte ich damit das Problem noch nicht wirklich lösen. Ich kann damit zwar sehr komfortabel Datenbanken, Tabellen, Datensätze etc. erstellen, ändern usw., aber ich kann natürlich nicht jedem User Zugriff auf PhpMyAdmin gewähren, wenn er seine Daten ändern will...

Tja, so weit zur Theorie - bleibt nur noch die Frage nach der praktischen Umsetzung... ;-)

Gruß,
Hobbes

bei Antwort benachrichtigen
Anonym Hobbes „PHP & MySQL & Sessions & Berechtigungen“
Optionen

Hmm, vielleicht hilft ein weiterer Gedankengang. Ich schreibe schon seit Monaten an einem eigenen Skript (bald fertig). Dort kann sich ein Benutzer registrieren, später einloggen. Stell es Dir einfach als eine Art Community-Skript mit weiteren Funktionen vor. So kann jeder Benutzer die persönlichen Daten eines jeden lesen. Aber seine persönlichen (Name, Passwort etc pp.) kann nur er schreiben. Dafür verwende ich zwei Skripte. Das eine zeigt alle an und das zweite ist nur für das persönliche des Users verantwortlich. Die Daten stehen in zwei Tabellen, weil ich in die eine die Kontodaten packe (Passwort, Session, Loginzeit usw.) und in die zweite die persönlichen Daten (Info, Rechnerzusammenstellung, Hobbies usw.)

Nachdem, was Du im letzten Posting geschrieben hast, ist das etwa der Anwendungsbereich, oder nicht? Alle User können (einen Teil) lesen und nur ihre persönlichen Daten editieren. Vielleicht eines noch:

> ... User Leserechte auf die komplette Datenbank hat ...
Meinst Du die Tabelle, wo die Daten drin stehen oder wirklich die komplette Datenbank. Also alle anderen Tabellen, falls vorhanden?
Ich kenne die Hierache so:
Datenbank -> Tabelle -> Datensatz -> Wert.

Archilles

bei Antwort benachrichtigen
Hobbes Anonym „Hmm, vielleicht hilft ein weiterer Gedankengang. Ich schreibe schon seit Monaten...“
Optionen

Hi Achilles!

Exakt! Das von Dir oben beschriebene Skript wäre genau das, was ich brauche - also falls Du einen Betatester suchst, dann schreib mir!! ;-)

Zum Thema "Leserechte auf die komplette Datenbank": Du hast recht, das war ein wenig mißverständlich ausgedrückt - ich meine natürlich Leserechte für die komplette Tabelle.

Gruß,
Hobbes

bei Antwort benachrichtigen
Anonym Hobbes „PHP & MySQL & Sessions & Berechtigungen“
Optionen

Hallo Hobbes.

Wollte noch nicht zu dick auftragen, daher habe ich etwas untertrieben. Mein Programm ist unlängst fertig. Im Mai habe ich angefangen und am 1. Juli veröffentlicht. Woran ich nun arbeite, ist ein Update auf Version 1.1, welches aber wirklich bald released werden soll.

Du kannst Dir gerne die Version 1.0 installieren und unter die Lupe nehmen. Beta-Tester von neuen oder aktuellen Versionen kannst Du natürlich immer werden, wenn Du Interesse hast. Einfach ein Wort sagen und Du wirst in die Credits-Liste eingetragen :). Am besten Du registrierst Dich dann noch, damit Du Zugriff auf mein Forum hast.

Du kannst Dir entweder das Programm direkt ansehen oder erstmal nur herunterladen. Die Auswahl überlasse ich Dir.
Wenn Du es Dir herunterziehst: Das Programm heißt MessageMAN Client.

Archilles

bei Antwort benachrichtigen
Hobbes Anonym „Hallo Hobbes. Wollte noch nicht zu dick auftragen, daher habe ich etwas...“
Optionen

Gut - vielen Dank schon mal!

Ich werde Version 1.0 (und später auch 1.1) mal testen und sehen, ob ich es für meine Zwecke einsetzen und gegebenenfalls (natürlich nach Rücksprache mit Dir) evtl. auch abändern/anpassen kann.

Ich melde mich wieder, so bald ich mich in den MMC eingearbeitet habe.

Gruß,
Hobbes

bei Antwort benachrichtigen