Ankündigung

Einklappen
Keine Ankündigung bisher.

Binäres Rechtesystem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Zitat von Flor1an Beitrag anzeigen
    Und jetzt möchte ich eben eine Liste aller Premium User etc.
    Wenn sich das auf meine Frage bezieht: Das ist die umgekehrte Aussage.
    "Liste aller Mitglieder der Gruppe Premium" ist ja nicht das selbe wie "Liste aller mit Leserecht".

    Kommentar


    • #32
      Naja wenn die so oder so alle die gleichen Rechte haben, kannst du einfach nach dem entsprechenden Permissions-Wert suchen. Alle Moderatorendürfen zum Beispiel im Forum schreiben, User sperren, Threads verschieben, Threads sperren oder löschen. Gehen wir davon aus, das die IDs dazu in der Reihenfolge so aussehen. (1, 3, 4, 6, 7) dann wäre der entsprechende Permissions-Wert für die Moderatoren ( 2+8+16+64+128 = 218 ). Das Query um Moderatoren zu listen wäre also:

      Code:
      SELECT * FROM user WHERE perm = '128'
      Das ganze ist also überhaupt kein Problem.
      MfG, Andy

      Kommentar


      • #33
        Ach so ist das mit den Bereichen

        Ich danke Avedo zunächst einmal für die erhellende Einbringung der Bereichebeispieltabelle. Jetzt muss ich erst mal die eine oder andere
        Annahme über Bord werfen. Allerdings "..darüber meditieren werde ich..." und mich noch mal melden.

        Offensichtlich kannst Du frei von äußeren Zwängen wie z.B. einem Projektabgabetermin entwickeln. Anonsten wäre aus meiner Sicht bis auf weiteres die beste Lösung, alle RechteIds kommasepariert entweder direkt
        in den Userdatensatz zu schreiben oder in eine Profiltabelle, wobei dann der User die Profil-ID erhält. Oder eine Gruppe erhält die Profil ID und der User die Gruppen ID. Profile machen natürlich nur dann Sinn, wenn Ihre Anzahl mindestens AnzahlUser - 1 beträgt . Ich habe selber so eine
        Lösung mal gecodet und und kann von keinen Performanceproblemen berichten. Es gibt allerdings auch nur ca. 10 Profile, die ca. 25 Rechte
        regeln müssen. Diese Rechte entsprechen so ziemlich Deinen Bereichen.

        Kommaseparierte Listen können sowohl in MySQL als auch PHP bestens verarbeitet werden.
        Es ist schon alles gesagt. Nur noch nicht von allen.

        Kommentar


        • #34
          Kommaseparierte Listen können sowohl in MySQL als auch PHP bestens verarbeitet werden.
          Joa, aber ich finde, mit mehreren Tabellen ist das besser zu handhaben. So hat man in PHP auch keine überflüssigen Werte und kann gezielt abfragen, was man benötigt.
          Naja, jedem das Seine.
          Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

          Kommentar


          • #35
            Ohne den Thread genauer gelesen zu haben: Rechte über Binärwerte abzubilden ist Schwachfug! In einem sauberen Datenmodell wird soetwas üblicherweise über bewertete Beziehungen gelöst. So ist man nicht gezwungen, bei neuen Objekten oder Änderungen die Struktur komplett updaten zu müssen.

            Just my 2 cents.
            Viele Grüße,
            Dr.E.

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            1. Think about software design before you start to write code!
            2. Discuss and review it together with experts!
            3. Choose good tools (-> Adventure PHP Framework (APF))!
            4. Write clean and reusable software only!
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

            Kommentar


            • #36
              Zitat von dr.e. Beitrag anzeigen
              Rechte über Binärwerte abzubilden ist Schwachfug!
              Hat aber zum Beispiel bei den Dateirechten unter Unix ein par Jahre durchgehalten

              Kommentar


              • #37
                Na das gilt aber ja wohl nicht als eines der Highlights an Unix.

                Die Beschränkung auf die 3 Kategorien is ja wohl eher die größte Krankheit.
                **********************************
                Nein, ich bin nicht die Signatur.
                Ich putze hier nur.
                **********************************

                Kommentar


                • #38
                  Zitat von David Beitrag anzeigen
                  Hat aber zum Beispiel bei den Dateirechten unter Unix ein paar Jahre durchgehalten
                  Ja, über die UNIX-Geschichte kann man sich streiten (siehe Vorgängerpost), aber (nun vollständig ausgedrückt) wenn schon eine Datenbank eingesetzt wird, stehen einem deutlich bessere Möglichkeiten zur Verfügung.
                  Viele Grüße,
                  Dr.E.

                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  1. Think about software design before you start to write code!
                  2. Discuss and review it together with experts!
                  3. Choose good tools (-> Adventure PHP Framework (APF))!
                  4. Write clean and reusable software only!
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                  Kommentar


                  • #39
                    Der Ansatz von Manko 10 ist auch O.K

                    Joa, aber ich finde, mit mehreren Tabellen ist das besser zu handhaben. So hat man in PHP auch keine überflüssigen Werte und kann gezielt abfragen, was man benötigt.
                    Naja, jedem das Seine.
                    @Manko10: Ja, damit kann ich auch gut leben. Hatte ich, glaube ich auch schon vorher mal gesagt.

                    Ich finde die kommaseparierten Strings nur deshalb so praktisch, da man alle Rechte sozusagen an einem Platz hat und direkt abfragen kann man das auch mit explode, in_array oder mysql find_in_set. Aus einem Tickbox-Array läßt sich so ein String sehr einfach zusammenbauen und wieder einlesen. Resourcen und Performance kann man hier glaube ich außer Acht lassen. Wir wollen ja nicht die Odyssey aus dem All wieder nach Hause bringen oder so. Aber wie Du schon sagst. Jedem das Seine.
                    Es ist schon alles gesagt. Nur noch nicht von allen.

                    Kommentar


                    • #40
                      Zitat von #Avedo Beitrag anzeigen
                      Die Datenbank Struktur
                      Code:
                      CREATE TABLE `permissions` (
                        `id` tinyint(4) NOT NULL auto_increment,
                        `name` varchar(30) NOT NULL default '',
                        PRIMARY KEY  (`id`),
                        UNIQUE KEY `name` (`name`)
                      ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;
                      
                      INSERT INTO `permissions` VALUES (1, 'settings');
                      INSERT INTO `permissions` VALUES (2, 'articles');
                      
                      CREATE TABLE `user` (
                        `id` tinyint(4) NOT NULL auto_increment,
                        `name` varchar(20) NOT NULL default '',
                        `password` varchar(32) NOT NULL default '',
                        `email` varchar(60) NOT NULL default '',
                        `perm` tinyint(3) unsigned NOT NULL default '0',
                        PRIMARY KEY  (`id`)
                        UNIQUE KEY `name` (`name`)
                      ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;
                      
                      INSERT INTO `user` VALUES (1, 'avedo', 'ddd6acc47c23379394ee7cdcbb4ea22b', 'pseudo@web.de', 30);
                      INSERT INTO `user` VALUES (2, 'klaus', '0f5f53ea8fe0e8eeb72db72b47ddf351', 'klaus@avedo.net', 14);

                      Hallo,

                      Auch wenn das Thema schon etwas älter ist habe ich grade mal versucht da ich eine Benutzerrechteverwaltung brauch diese hier anzuwenden, leider kriege ich nur eine Fehlermeldung bei der phpmyadminverwaltung.


                      Kann mir jemand sagen woran das liegt?

                      MySQL meldet: Dokumentation

                      #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE KEY `name` (`name`)
                      ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMEN' at line 8


                      MFG

                      Kommentar


                      • #41
                        An nem fehlenden Komma?
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #42
                          hmm ok und wo?

                          Wüsste jetzt nicht wo und dann ist der Anfangspost ja ebenfalls falsch :/


                          EDIT

                          Ach du bist ein Schatz


                          Danke Fehler gefunden und beseitig.

                          Kommentar

                          Lädt...
                          X