Neue Antwort erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Neu erstellte Beiträge unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.

Die letzte Antwort auf dieses Thema liegt mehr als 365 Tage zurück. Das Thema ist womöglich bereits veraltet. Bitte erstellen Sie ggf. ein neues Thema.

Informationen
Sicherheitsabfrage („reCAPTCHA“)
Nachricht
Maximale Anzahl an Dateianhängen: 10
Maximale Dateigröße: 1 MB
Erlaubte Dateiendungen: bmp, gif, jpeg, jpg, pdf, png, txt, zip
Internet-Adressen werden automatisch erkannt und umgewandelt.
Smiley-Code wird in Ihrer Nachricht automatisch als Smiley-Grafik dargestellt.
Sie können BBCodes zur Formatierung Ihrer Nachricht nutzen.

Vorherige Beiträge 11

  • 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. (-:
  • 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.

    Quellcode

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


    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:

    Quellcode

    1. CREATE TABLE `gal_usrright`
    2. (`grpID` INT,
    3. `canCrtGal` TINYINT(1) DEFAULT 0,
    4. `canDelGal` TINYINT(1) DEFAULT 0,
    5. `canEdiGal` TINYINT(1) DEFAULT 0,
    6. `canUplPic` TINYINT(1) DEFAULT 0,
    7. `canDelPic` TINYINT(1) DEFAULT 0,
    8. `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?
  • Ich hab Benutzerrechte mit Bitweisen Verknüpfungen gelöst. Das ist zum einen übersichtlich und zum anderen extrem Platzsparend:

    Quellcode

    1. //config.php
    2. define ("P_LOGIN", 1);
    3. define ("P_UPLOAD", 2);
    4. define ("P_POSTNEWS", 4);
    5. 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:

    Quellcode

    1. if ($variable & P_UPLOAD) {
    2. doupload();
    3. }else{
    4. echo "Zugang verweigert";
    5. }
  • 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.
  • 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.