Userrechte - wie realisieren ?

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

  • #61
    den weg wie du sie gesetzt hast einfach umdrehen.

    tipp:
    1. alle aktiven recht in ein array laden. -> array *gg*
    2. dann alle rechte mit einer schleife durchlaufen und mit in_array() testen, ob du jetzt ein häckchen in der darstellung der checkbox machen muss.


    wenn du nur so deine rechte darstellen willst, nimm punkt 1 und lasse dir die namen schon passend ausgeben.


    OffTopic:
    only textanswer: no code too
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #62
      Okay, zuerst mal prüfe ich, ob der jewelige User überhaupt Rechte hat:

      PHP-Code:
      $res mysql_query("SELECT COUNT(*) as nums FROM $user_rights_tname WHERE userid='".$_SESSION['user_id']."'");
      $cache mysql_fetch_array($res);
      $num_rows $cache[nums];

      if (
      $num_rows != "0") { // wenn $num_rows != 0 gehts hier weiter 
      In $num_rows steht nun der Wert der verteilten Rechte an den jeweiligen User insgesamt. Wie ist es möglich alle Werte der Spalte catid von WHERE userid zu selecten ? So dass ich all diese verfügbaren Werte in einem Array dann speichern kann. Dass ich danach einfach in etwa so einer Form checken kann:

      Code:
      if ($rechte[catid] == "$arraywert") { echo "zugriff genehmigt ..."; }

      Kommentar


      • #63
        doch wieder code?

        du musst zwei tabellen auslesen:
        - die tabelle in der all rechte stehen
        - die tabelle, in der du die zuordnung vornimmst

        diese tabellen werden mittels JOIN verknüpft, so kannst du für jedes recht, das der benutzer hat die beschreibung aus der tabelle mit allen rechten ausgeben

        ob er überhaupt rechte hat würd ich gar nich erst abfragen. ich hab dich so verstanden, dass du nen user auswählen willst und dann alle rechte, die vergeben weren können als checkbox erscheinen und die, die der user hat angekreuzt sind oder?

        wenn dem so ist, beschäftige dic h mit der JOIN syntax von mySQL

        wenn du damit nich klar kommst, schau mal im sql-forum, da steht in vielen beiträgen was von joins
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #64
          doch wieder code?
          OffTopic:
          Ich meinte damit nur, dass ich keinen Code erzwingen/verlangen möchte, damit ihr nicht falsch denkt.


          ob er überhaupt rechte hat würd ich gar nich erst abfragen. ich hab dich so verstanden, dass du nen user auswählen willst und dann alle rechte, die vergeben weren können als checkbox erscheinen und die, die der user hat angekreuzt sind oder?
          Nein, ich möchte einfach einen Adminbereich anzeigen falls der jeweilige User überhaupt Rechte hat. In seinem persönlichen Editierbereich soll das nämlich sein. Also nichts mit Checkboxen, Optionsschalter oder dergleichen. Deswegen ist es nötig die User nach Rechten zu überprüfen.

          Deshalb wollte ich nun alle Spaltenwerte "catid" von WHERE userid selecten und ALLE in einem Array speichern, aber mittels einfachen SELECT wird jeweils nur die ID standardgemäß nach dem Schema ORDER BY ID ASC ausgewählt, was auch normal ist. Nur wollte ich nun alle verfügbaren Werte der Spalte catid des jeweiligen User in einem Array speichern, sodass ich danach ganz einfach überprüfen kann, ob er die Rechte zu dieser catid (Kategorie) hat.

          Kommentar


          • #65
            dann geh halt alle datensätze, die dir geliefert werden durch und speichere cdatid in einem neuen array

            biespiele dazu stehen zuhauf überall,auch in diesem thread
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #66
              hey mach doch einer einfach nen tutorial raus , ich und viele andere hätten sicher interesse.


              danke
              thx Mukraker

              Kommentar


              • #67
                Original geschrieben von mrhappiness
                dann geh halt alle datensätze, die dir geliefert werden durch und speichere cdatid in einem neuen array

                biespiele dazu stehen zuhauf überall,auch in diesem thread
                Ich habs mir so gedacht:

                PHP-Code:
                    for ($i=0$i<$num_rows$i++) {

                    
                $res mysql_query("SELECT * FROM $user_rights_tname WHERE userid='".$_SESSION['user_id']."'");

                    while (
                $row mysql_fetch_array($res)) { $access[] = $row[catid]; }
                    
                    } 
                $num_rows ist ja die Gesamtzahl der Rechte und so oft muss der Array ja auch definiert werden. Definiert werden sollte hierbei jeweils die catid in das Array.

                Später soll geprüft werden ob der user die catid im Array hat:

                PHP-Code:
                    if ($right[id] == "access[]") { echo "<a href='?action=admin&view=$right[subname]'>$right[name]</a>"; }
                    else { echo 
                "<font color='$dcolor'>$right[name]</a>"; } 
                Leider funktionierts aber nicht. Hoffe ihr versteht es wenigstens von der Logik her, was ich bewirken möchte.
                Zuletzt geändert von jOhnny knOx; 14.06.2003, 11:19.

                Kommentar


                • #68
                  was du machen willst versteh ich, aber du machst was anderes

                  es reicht völlig aus, wenn du das einlesen der rechte einmal machst, ohne ne for-schleife, was soll denn beim zweitenmal anderes rauskommen?

                  deine abfrage die du dann machst versteh ich nich so ganz, kann aber auch daran liegen, dass ich nich weiß wo die variablen herkommen die du verwendest (z.b. $right)
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #69
                    es reicht völlig aus, wenn du das einlesen der rechte einmal machst, ohne ne for-schleife, was soll denn beim zweitenmal anderes rauskommen?
                    Ich wollte mit der for-Schleife die Werte der Spalte catid vom jeweiligen User in ein Array speichern, weil sonst hat das Array nur einen Wert undzwar den von "ORDER BY ID ASC", was ja standardgemäß beim SELECTEN gesetzt ist. Also hierbei:

                    PHP-Code:
                    $res mysql_query("SELECT * FROM $user_rights_tname WHERE userid='".$_SESSION['user_id']."'"); 
                    deine abfrage die du dann machst versteh ich nich so ganz, kann aber auch daran liegen, dass ich nich weiß wo die variablen herkommen die du verwendest (z.b. $right)
                    PHP-Code:
                        $res2 mysql_query("SELECT * FROM $user_cat_tname");
                        while (
                    $right mysql_fetch_array($res2)) { 
                    Daher kommt $right. Das ist die Tabelle wo die ganzen Kategorien drinstehen, die administrierbar sind.

                    Kommentar


                    • #70
                      Was kann ich nun tun ?

                      Kommentar


                      • #71
                        wenn du alle rechte des benutzers in nem array hast, musst du die mit allen rechten insgesamt vergleichen (also die schleifen geschickt anordnen und evtl. (je nachdem wie's bei dir dir aussieht) verschachteln

                        oder du machst das alles in einer abfrage mit JOIN, aber das scheinst du ja nich zu wollen, obwohl's einfacher wäre
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #72
                          Original geschrieben von mrhappiness
                          wenn du alle rechte des benutzers in nem array hast, musst du die mit allen rechten insgesamt vergleichen (also die schleifen geschickt anordnen und evtl. (je nachdem wie's bei dir dir aussieht) verschachteln
                          Das ist ja mein Problem. Ich bekomme ja nur einen Wert von der DB beim SELECT. Das ist, wie bereits erwähnt, der Standard-"ORDER BY ID ASC"-Wert.

                          Kommentar


                          • #73
                            du bekommst so viele ergebnisse, wie eben auf dein select passen, die kannst du mit mysql_fetch_array durchgehen!

                            langsam glaub ich, du machst das absichtlich
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #74
                              PHP-Code:
                                  $res mysql_query("SELECT * FROM $user_rights_tname WHERE userid='".$_SESSION['user_id']."'");

                                  while (
                              $row mysql_fetch_array($res)) { $access[] = $row[catid]; }
                                  
                                  
                              $i=1;
                                  
                              $res2 mysql_query("SELECT * FROM $user_cat_tname");
                                  while (
                              $right mysql_fetch_array($res2)) {

                                  echo 
                              "<tr height='$theight'>";

                                  if ((
                              $i%2)==0)
                                  echo 
                              "<td bgcolor='$tcolor2' align='center'>";
                                  else
                                  echo 
                              "<td bgcolor='$tcolor3' align='center'>";
                                  
                              $i++; 
                              Nun will ich prüfen ob die id der Kategorie der id des zugefügten Rechtes des Users entsprechen:



                              PHP-Code:
                                  if ($right[id] == "access[]") { echo "<a href='?action=admin&view=$right[subname]'>$right[name]</a>"; }
                                  else { echo 
                              "<font color='$dcolor'>$right[name]</a>"; }

                                  echo 
                              "</td></tr>"
                              Das geht aber nicht. if ($right[id] == "access[]") sollte doch eigentlich jeden Wert im array access[] überprüfen und sofern sie identisch sind sollte es eigentlich funktionieren, aber es geht nicht.

                              Kommentar


                              • #75
                                Original geschrieben von jOhnny knOx
                                if ($right[id] == "access[]") sollte doch eigentlich jeden Wert im array access[] überprüfen und sofern sie identisch sind sollte es eigentlich funktionieren, aber es geht nicht.
                                sollte, weil du dir das so geacht hast, aber du vergleichst $right[id] nicht mit dem inhalt des arrays $access sondern mit dem string "access[]"

                                schau mal im manual bei den array-funktionen da is was dabei, das dir da hilft
                                Ich denke, also bin ich. - Einige sind trotzdem...

                                Kommentar

                                Lädt...
                                X