the Hellboard
Zum Portal Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Portal » the Hellboard » Computer und Co » Software » Coder Forum » PHP: Zugriffsrechte » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen PHP: Zugriffsrechte
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
stanny stanny ist männlich
Forenwächter


images/avatars/avatar-888.jpg

Dabei seit: 21.09.2002
Beiträge: 2.075
Herkunft: Lüneburg

Level: 53 [?]
Erfahrungspunkte: 16.370.665
Nächster Level: 19.059.430

2.688.765 Erfahrungspunkt(e) für den nächsten Levelanstieg

PHP: Zugriffsrechte Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo.
Ich arbeite derzeit an einer Galerie, die mit einem Gruppen-Script harmoniert.
Nun ist die Frage, wie ich die Benutzerrechte (mySQL) speichern sollte.

Sollte ich für jede Galerie eine neue Spalte in der Tabelle der Benutzerrechte machen?

Beispiel:

code:
1:
2:
3:
4:
5:
6:
7:
8:
CREATE TABLE `hphp0_grps`
  (`ID` INT PRIMARY KEY AUTO_INCREMENT,
   `name` VARCHAR(255),
   `password` VARCHAR(255),
   [...]
   `galerie0_canUploadPic` TINYINT(1) DEFAULT 0,
   `galerie0_canDeletePic` TINYINT(1) DEFAULT 0,
   [...]);


Oder sollte ich in der Tabelle der Galerie die IDs der Benutzergruppen speichern, welche Bilder hochladen etc. können? Wenn ja, gibt es irgendeine Art Array-Variable?

Falls ja und nein ( (-; ): Sollte ich dann eine Art Array selber schreiben, indem ich noch eine Tabelle anlegen, in denen die Benutzerrechte und -gruppen der Galerie gespeichert werden und daraus ein Array erstellen?

Oder habt ihr eine ganz andere Idee?

Bitte schnell um Antwort.

Danke (-:

__________________
theharlekin.de

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von stanny: 27.08.2005 00:59.

27.08.2005 00:59 stanny ist offline E-Mail an stanny senden Homepage von stanny Beiträge von stanny suchen Nehmen Sie stanny in Ihre Freundesliste auf
SirBelial SirBelial ist männlich
Forenbesetzer


images/avatars/avatar-858.jpg

Dabei seit: 15.04.2004
Beiträge: 1.183
Herkunft: Bielefeld - Quelle

Level: 49 [?]
Erfahrungspunkte: 8.655.829
Nächster Level: 10.000.000

1.344.171 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

http://mysql.com/set
27.08.2005 12:20 SirBelial ist offline E-Mail an SirBelial senden Beiträge von SirBelial suchen Nehmen Sie SirBelial in Ihre Freundesliste auf
Hamster
Nervensäge


images/avatars/avatar-730.jpg

Dabei seit: 05.07.2005
Beiträge: 66
Herkunft: Mannheim

Level: 32 [?]
Erfahrungspunkte: 453.481
Nächster Level: 453.790

309 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bin zwar kein EXperte in Sachen php, aber ich würde sagen wenn du genug Datenbanken anlegen kannst würde ich alles in eine tabelle rein schreiben, und mir nicht die Mühe mit dem Array amchen.

__________________

27.08.2005 12:21 Hamster ist offline E-Mail an Hamster senden Homepage von Hamster Beiträge von Hamster suchen Nehmen Sie Hamster in Ihre Freundesliste auf
stanny stanny ist männlich
Forenwächter


images/avatars/avatar-888.jpg

Dabei seit: 21.09.2002
Beiträge: 2.075
Herkunft: Lüneburg

Level: 53 [?]
Erfahrungspunkte: 16.370.665
Nächster Level: 19.059.430

2.688.765 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Lord Belial
http://mysql.com/set


Verstehe ich nicht ganz. Wie kann ich da Zahlen speichern?

__________________
theharlekin.de
27.08.2005 12:37 stanny ist offline E-Mail an stanny senden Homepage von stanny Beiträge von stanny suchen Nehmen Sie stanny in Ihre Freundesliste auf
MoD3000
Hoffnungsloser Fall


images/avatars/avatar-25.jpg

Dabei seit: 25.09.2002
Beiträge: 3.510

Level: 56 [?]
Erfahrungspunkte: 27.676.014
Nächster Level: 30.430.899

2.754.885 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie Beli bereits andeutete: Die letztere Variante skaliert.
Etwas Platzverschwendung mal beiseite faende ich zwei Tabellen 'create_gal' & 'del_gal' gut, in denen jede Zeile eine Gruppe mit einer Galerie verknuepft. Das laesst sich einfacher durchsuchen.
27.08.2005 12:37 MoD3000 ist offline Homepage von MoD3000 Beiträge von MoD3000 suchen Nehmen Sie MoD3000 in Ihre Freundesliste auf
stanny stanny ist männlich
Forenwächter


images/avatars/avatar-888.jpg

Dabei seit: 21.09.2002
Beiträge: 2.075
Herkunft: Lüneburg

Level: 53 [?]
Erfahrungspunkte: 16.370.665
Nächster Level: 19.059.430

2.688.765 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Also du sprichst davon, jede Galerie eine (bzw. 3, 4) Spalte(n) in die Tabelle der Benutzergruppen anzulegen?

__________________
theharlekin.de
27.08.2005 14:53 stanny ist offline E-Mail an stanny senden Homepage von stanny Beiträge von stanny suchen Nehmen Sie stanny in Ihre Freundesliste auf
MoD3000
Hoffnungsloser Fall


images/avatars/avatar-25.jpg

Dabei seit: 25.09.2002
Beiträge: 3.510

Level: 56 [?]
Erfahrungspunkte: 27.676.014
Nächster Level: 30.430.899

2.754.885 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nein.
code:
1:
2:
3:
4:
CREATE TABLE `create_gal` (`gallery_id` [SMALL]INT, `group_id` [SMALL]INT)
CREATE TABLE `del_gal` LIKE `create_gal`

Einfach, vielleicht gibts auch was besseres.
27.08.2005 15:22 MoD3000 ist offline Homepage von MoD3000 Beiträge von MoD3000 suchen Nehmen Sie MoD3000 in Ihre Freundesliste auf
Arudil Arudil ist männlich
Stammgast


images/avatars/avatar-85.gif

Dabei seit: 27.10.2003
Beiträge: 160

Level: 37 [?]
Erfahrungspunkte: 1.198.110
Nächster Level: 1.209.937

11.827 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich hab Benutzerrechte mit Bitweisen Verknüpfungen gelöst. Das ist zum einen übersichtlich und zum anderen extrem Platzsparend:

code:
1:
2:
3:
4:
5:
//config.php
define ("P_LOGIN", 1);
define ("P_UPLOAD", 2);
define ("P_POSTNEWS", 4);
define ("P_ADMIN", 8);


P steht für Privileg, einfach damit ich weiß was Sache ist, wenn ich die Konstante irgendwo seh.
P_LOGIN sagt dann darüber etwas aus, ob der User einloggen darf. Darf er einloggen, wird der Wert (1) gesetzt.
Darf der User News posten ("P_POSTNEWS"), wird zusätzlich der Wert 4 gesetzt.
Darf der User nichts hochladen, wird der Wert (2) für P_UPLOAD nicht gesetzt.
Rechnen wir nun die Werte zusammen, kommen wir auf 1+4=5.
Damit kann man dann später prüfen was der User darf.
Jetzt wirst du dich evtl fragen: "Aber wartmal 2+3 ist auch 5". Stimmt schon, aber es gibt keinen Wert 3, genausowenig wie es einen Wert 5 gibt.

Das Prüfen der Rechte geht ziemlich einfach:

code:
1:
2:
3:
4:
5:
6:
7:
if ($variable & P_UPLOAD) {
doupload();
}else{
echo "Zugang verweigert";
}
27.08.2005 16:07 Arudil ist offline E-Mail an Arudil senden Beiträge von Arudil suchen Nehmen Sie Arudil in Ihre Freundesliste auf
stanny stanny ist männlich
Forenwächter


images/avatars/avatar-888.jpg

Dabei seit: 21.09.2002
Beiträge: 2.075
Herkunft: Lüneburg

Level: 53 [?]
Erfahrungspunkte: 16.370.665
Nächster Level: 19.059.430

2.688.765 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das wird bei mir leider nicht realisierbar sein, da ich ein Basis-Script habe, welches mit beliebig vielen Plugins erweitert werden kann. Somit wäre es ein Problem, wenn das Galerie Script mit der Berechtigung "4" arbeitete und das Blog Script auch.

edit: Ach, jetzt versteh ich, was du meinst, Mod.

Jetzt wo ich länger drüber nachdenke, kommt mir meine Anfangslösung aber dennoch zunehmend gut vor. Und zwar, dass jede Galerie einfach ca. 5 (Erstellen, Löschen, Bearbeiten, Bild hochladen, Bild löschen) Spalten in der Benutzertabelle vornimmt.

Dagegen spricht allerdings, dass die Tabelle der Benutzergruppen schnell sehr groß wird.
Nehmen wir an, ich habe nur 5 Galerien, so hat die Tabelle der Benutzergruppen schon 25 Spalten mehr.

Dafür spricht, dass ich die Abfrage durch diese Funktion vereinfachen und globalisieren kann.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function getusrright ($str) {
    if (!$_SESSION['logdIn'])
        return false;
    global $sql, $scriptnr;
    $sql->queryDb('SELECT `grpID` FROM `hphp'.$scriptnr.'_users` WHERE `ID` = '.$_SESSION['userID'].';');
    if (!$sql->getErr()) {
        $row = $sql->fetchRow();
        $sql->queryDb('SELECT `'.$str.'` FROM `hphp'.$scriptnr.'_groups` WHERE `ID` = '.$row[0].';');
        if (!$sql->getErr()) {
            $row = $sql->fetchRow();
            return (bool)$row[0];
        }
    }
    return -1;
}


Ist es nun ein Problem, Tabellen mit 100 oder sogar mehr Spalten zu haben (andere Plugins werden ja nach demselben Prinzip handeln)?

edit:

Ich habe mich nochmal mit Knolle unterhalten und tendiere nun stark zu MODs Variante.
Allerdings werde ich wohl eine Tabelle für die Rechte nehmen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
CREATE TABLE `gal_usrright`
	(`grpID` INT,
	 `canCrtGal` TINYINT(1) DEFAULT 0,
	 `canDelGal` TINYINT(1) DEFAULT 0,
	 `canEdiGal` TINYINT(1) DEFAULT 0,
	 `canUplPic` TINYINT(1) DEFAULT 0,
	 `canDelPic` TINYINT(1) DEFAULT 0,
	 `canEdiPic` TINYINT(1) DEFAULT 0);

So in etwa. Dann muss ich zwar für jedes Script eine Funktion zum Abfragen schreiben, aber egal. (-:

Noch jemand Einwände?

__________________
theharlekin.de

Dieser Beitrag wurde 7 mal editiert, zum letzten Mal von stanny: 27.08.2005 18:47.

27.08.2005 16:52 stanny ist offline E-Mail an stanny senden Homepage von stanny Beiträge von stanny suchen Nehmen Sie stanny in Ihre Freundesliste auf
MoD3000
Hoffnungsloser Fall


images/avatars/avatar-25.jpg

Dabei seit: 25.09.2002
Beiträge: 3.510

Level: 56 [?]
Erfahrungspunkte: 27.676.014
Nächster Level: 30.430.899

2.754.885 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wenn du die Tabellen ordentlich benennst, kannst du dir eine Funktion basteln, die die Anderungen vornimmt und du hast keine Code-duplikation
27.08.2005 19:38 MoD3000 ist offline Homepage von MoD3000 Beiträge von MoD3000 suchen Nehmen Sie MoD3000 in Ihre Freundesliste auf
stanny stanny ist männlich
Forenwächter


images/avatars/avatar-888.jpg

Dabei seit: 21.09.2002
Beiträge: 2.075
Herkunft: Lüneburg

Level: 53 [?]
Erfahrungspunkte: 16.370.665
Nächster Level: 19.059.430

2.688.765 Erfahrungspunkt(e) für den nächsten Levelanstieg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hab ich mir auch überlegt, sie übernimmt einfach einen zweiten optionalen Parameter, der die Tabelle angibt. Wird nichts angegeben, wird die Standardtabelle ausgelesen. Fertig.

Vielen Dank euch allen. (-:

__________________
theharlekin.de
28.08.2005 02:23 stanny ist offline E-Mail an stanny senden Homepage von stanny Beiträge von stanny suchen Nehmen Sie stanny in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Thema bewerten: 

nicht lesenswert nicht lesenswert 

1

2

3

4

5

6

7

8

9

10
 lesenswert lesenswert

Portal » the Hellboard » Computer und Co » Software » Coder Forum » PHP: Zugriffsrechte

Impressum Netiquette

Powered by Burning Board 2.3.6 © 2001-2007 WoltLab GmbH