Jiriki: Authorisierung für verschiedene Homepagebereiche (PHP+SQL)

Hi Leute,

Bisher haben die Webseiten eines Pferdezuchtverbandes einen benutzerspezifischen Bereich, die Auktion. Damit die Benutzer bieten konnten, mussten sie in der SQL-Tabelle "user" unter Attribut "authorized" eine 1 gesetzt sein, ansonsten 0. Nun wird ein zweiter benutzerspezifischer Bereich eingeführt, die Members-Area. Nun kann ein Benutzer für keinen, einen der beiden, oder beide Bereiche authorisiert sein.

Hier meine Frage: Wie würdet Ihr die Authorisierung in der SQL-Tabelle verwalten? Mit zwei Attributen, z.B. "auth_auction" und "auth_members", oder mit einem Attribut "authorize" als INTEGER, wobei 0,1,2,3 die vier Optionen wiedergeben, oder mit einem Attribut als CHAR, indem man in Binärschreibweise die Optionen angibt, wobei jede Binärstelle für einen Bereich zuständig ist, z.B. "10", welches für die Auktion authorisieren würde, wohingegen "01" für die Memberssection.
Ich möchte das ganze schon in Hinblick auf eventuelle weitere benutzerspezifische Bereiche anlegen, sodass ein dritter oder vierter Bereich kein großes Problem in der SQL-Organisation darstellt.

Soweit. Ich glaub das ist mehr Text als das Problem groß ist;)

Grüßle und thx fürs Lesen

  1. Hi there,

    Hier meine Frage: Wie würdet Ihr die Authorisierung in der SQL-Tabelle verwalten?

    Ich löse so etwas immer mit einem Bitfeld. (0x00x0x...) Wie Du das dann abspeicherst, ist eigentlich egal...

  2. Hallo,

    ich würde für jede Autorisierung eine eigene Spalte anlegen, weil hierbei zum einen eine Erweiterung einfacher und das ganze übersichtlicher wäre:

    INTEGER: Lässt sich zwar leicht erweitern (man braucht eben bei erweiterten Rechten nur den Wert anpassen), wird aber recht schnell unübersichtlich ("Was war noch mal '15'?").

    BINÄR: Wenn Du einen weiteren Bereich anlegst, fehlen in den bestehenden Datenfeldern Ziffern am Ende. Du müsstest diese dann entweder mit Nullen auffühlen oder das Script so programmieren, dass fehlende Ziffern autom. null sind. Aber auch hier nimmt die Übersicht ab ("Für was war die 6. Stelle?").

    Ich hoffe, ich konnte dir Helfen.

    Einen schönen Rest-Feiertag noch,
    delirium

    1. ich würde für jede Autorisierung eine eigene Spalte anlegen, weil hierbei zum einen eine Erweiterung einfacher und das ganze übersichtlicher wäre:

      So werde ichs machen. Da die CMS-Nutzer der Seite manchmal auch direkt in die SQL-Tabellen schauen, wären Attribute mit eindeutigen Namen und nur 0 und 1 als Option selbsterklärend und daher besser geeignet.

      Thx an Euch beide!

      1. echo $begrüßung;

        Da die CMS-Nutzer der Seite manchmal auch direkt in die SQL-Tabellen schauen, wären Attribute mit eindeutigen Namen und nur 0 und 1 als Option selbsterklärend und daher besser geeignet.

        Wenn du MySQL verwendest (du hast leider anzugeben vergessen, für welches System du die Lösung suchst), kannst du den Spaltentyp SET nehmen. Er speichert intern die Information als Bits, repräsentiert es aber nach außen hin als Text, kann also selbsterklärend gestaltet werden.

        echo "$verabschiedung $name";

    2. Hello,

      ich würde für jede Autorisierung eine eigene Spalte anlegen, weil hierbei zum einen eine Erweiterung einfacher und das ganze übersichtlicher wäre:

      Ich würde eine Zeile dafür nehmen in einer neuen Tabelle :-)

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Ich würde eine Zeile dafür nehmen in einer neuen Tabelle :-)

        Ein harzliches Glückauf

        Tom vom Berg

        Stimmt, dass ist natürlich auch ne Möglichkeit ;-)
        Und dann mit Join zusammenfassen (User ID in der Benutzertabelle und in der Rechtetabelle)