Datenbank gestützes Loginscript

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

  • #31
    eieiei! Das kommt davon, wenn man alles abändern muß

    du hast aus der Abfrage nach dem User mit Paswort von $result ein $res gemacht. Allerdings greift genau die Zeile mit den "gruppe_id" auf $result zu. Das gibt es natürlich (jetzt) nicht mehr, du mußt dann da auch aus $result ein $res machen. Nach dieser Zeile gibts ja ein neues $result und ein Auslesen von diesem. Das kann so bleiben.

    War klar was ich meine?

    Kommentar


    • #32
      HÄÄÄÄÄÄÄÄÄ,

      Ich habe doch die Datei wieder in den Originalzustand gebracht, aber schon bei meinem Posting am Sonntag.

      Die user.inc.php sieht in deiesm Bereich so aus.
      $gruppe = mysql_result($result, 0, "gruppe_id"); // welche Gruppe ist der User
      $result = mysql_query("select * from usergruppe where (gruppe_id = $gruppe)"); // Gruppe selektieren
      $rechte = mysql_fetch_array($result);
      $login_flag = true;

      ist doch richtig oder?
      cu
      Gilbert
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #33
        STOP! Der Fehler liegt weiter oben. Es gibt doch zuerst eine Abfrage nach dem User und seinem Passwort. Diese Abfrage wurde bei meinem Code ursprünglich in $result gespeichert. Und DARAUF greift auch die Zeile mit
        $gruppe=mysql_result($result...) zurück. Du hast aber, laut deinem letzten Posting, diese Variable beim Query oben in $res umbenannt. Dann mußt du auch das im mysql_result tun.
        Code:
        <? 
        session_start(); 
        
        if (session_is_registered("myuser") && session_is_registered("mypass")) { 
        $user=$myuser; 
        $passwort=$mypass; 
        } 
        
        include("data_db.inc.php"); 
        $db = mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw") or die (mysql_error()); 
        mysql_select_db("$MySQL_Data"); 
        
        // ACHTUNG! HIER STEHT EINE ANDERE VARIABLE !!!!!
        $res = mysql_query("select * from user where (usr='$user') and (pwd='$passwort')"); 
        $num = mysql_num_rows($res); 
        
        if ($num == 0) { // kein User, zurück zum Login 
        $login_flag=false; 
        } 
        else { 
        echo "Sie sind angemeldet."; 
        // Anmeldung war erfolgreich, jetzt den Krempel als Session speichern, falls noch nicht passiert 
        if (!session_is_registered("myuser") && !session_is_registered("mypass")) { 
        session_register("myuser","mypass"); 
        $myuser = $user; 
        $mypass = $passwort; 
        } 
        $i=0; 
        
        // DESHALB HIER AUCH DIE VAR VON OBEN BENUTZEN !!!!
        $gruppe = mysql_result($res, 0, "gruppe_id"); // welche Gruppe ist der User 
        $result = mysql_query("select * from usergruppe where (gruppe_id = $gruppe)"); // Gruppe selektieren 
        $rechte = mysql_fetch_array($result); 
        $login_flag = true; 
        } 
        ?>
        Okay??

        Kommentar


        • #34
          Fehler gefunden!!

          In der Tabelle user benutze ich nicht gruppe_id sondern gruppe.

          Aber wieso wird mir das $login_flag erst nach der Anmeldung an die nav.php übergeben und nicht schon beim ersten Aufruf.
          Da müßte es doch $login_flag == false sein, oder habe ich jetzt einen Denkfehler.

          Weil nach den Anmelden würde mir $login_flag == true übermittelt an die nav.php.

          So nun geht es weiter. Wie kann ich jetzt die überschiedlichen Abfragen nach den Rechten der User aufbauen.

          Also Usergruppe 1 darf nur zu den Nachrichten,
          Usergruppe 2 darf nur zu den Terminen
          und so weiter.

          Das ist doch eine verschachtelte if else Abfrage oder?
          cu
          Gilbert
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #35
            kommt drauf an, was du abfragen willst. Wenn du nun als Beispiel den Button oder Link für "Termin ändern" ausgeben willst, dann mußt du nur das zugehörige Recht $rechte[3] oder $rechte["termin_aendern"] abfragen. Fertig. Nix verschachtelt. Und das so für jeden einzelnen Menüpunkt aufbauen.
            Falls nicht, mußt du deutlicher sagen, was du machen willst, also das Ziel.
            Und von der Logik her ist die user.inc.php nun schon genau richtig. Weiß nicht genau, was du meinst.

            Kommentar


            • #36
              Meine nav.php sieht jetzt so aus

              <?php
              include("user.inc.php");
              include("func.inc.php");
              if ($login_flag==true)
              echo "<$ffa>Sie sind ein geloggt";

              else
              echo "<$ffa>Sie sind noch nicht angemeldet<$ffe>";

              if ($rechte[1] == 1)
              echo "Nachrichten";

              if ($rechte[2] == 1)
              echo "Termine";
              ?>

              wie bekommen ich nun die Ausgabe für recht 1

              [Editiert von Wotan am 29-10-2001 um 09:42]
              *winks*
              Gilbert
              ------------------------------------------------
              Hilfe für eine Vielzahl von Problemen!!!
              http://www.1st-rootserver.de/

              Kommentar


              • #37
                Sorry, leider verstehe ich die letzte Frage nicht so recht. Du hast doch bereits die Ausgabe von Recht 1, oder?! Wo ist das Problem? Oder wo willst du hin?

                Kommentar


                • #38
                  Das ist die Anzeige wenn der User noch nicht angemeldet ist:

                  Sie sind noch nicht angemeldet

                  Das ist die Anzeige wenn der User angemeldet ist:

                  Sie sind eingeloggt

                  Jetzt sollen darunter die Links angezeigt werden, je nach dem welchens Recht der User hat.
                  Userrecht 1 = Termine ändern
                  Userrecht 2 = Nachrichten ändern
                  Userrecht 3 = Termine und Nachrichten ändern
                  usw
                  *winks*
                  Gilbert
                  ------------------------------------------------
                  Hilfe für eine Vielzahl von Problemen!!!
                  http://www.1st-rootserver.de/

                  Kommentar


                  • #39
                    aber dein Code war doch schon richtig? Du mußt nur noch für jede mögliche Funktion bei der if-Abfrag eine Verknüpfung aller Varianten einbauen, z.B. muß $rechte[7]==1 immer abgefragt werden, wenn an Position [7] das Recht für alles steht (siehe dein erste Beitrag zu diesem Thema). Hab da mal so für die ersten drei Punkte beispielhaft geschrieben:
                    Code:
                    <?php 
                    include("user.inc.php"); 
                    include("func.inc.php"); 
                    if ($login_flag==true) 
                    echo "<$ffa>Sie sind ein geloggt"; 
                    
                    else 
                    echo "<$ffa>Sie sind noch nicht angemeldet<$ffe>"; 
                    
                    if ($rechte[1] == 1 || $rechte[4]==1 || $rechte[7]==1) // $rechte[7] steht für Chef, der alles darf
                    echo "<a href=datei1.php>Termine ändern</a>"; // hier die Ausgabe, wenn Rechte gesetzt
                    
                    if ($rechte[2] == 1 || $rechte[4]==1 || $rechte[7]==1) 
                    echo "<a href=datei2.php>Nachrichten ändern</a>"; // hier ausgabe des Links für das Recht
                    
                    if ($rechte[3] == 1 || $rechte[7]==1) 
                    echo "<a href=datei3.php>Shop ändern</a>"; // hier Link für neues Recht
                    ?>
                    verstehst du, was ich meine? $rechte[4] ist jemand, der sowohl "termine" als auch "nachrichten" ändern darf.

                    Kommentar


                    • #40
                      muß ich an der Datenbank noch was ändern.

                      Die Datenbank userrecht hat folgendes aussehen:
                      Tabellenname = userrecht
                      Spaltenname = gruppe_id

                      Inhalt
                      1
                      2
                      3
                      4
                      5
                      6
                      7

                      oder fehlt da noch was?

                      cu
                      Gilbert(Newbie)
                      *winks*
                      Gilbert
                      ------------------------------------------------
                      Hilfe für eine Vielzahl von Problemen!!!
                      http://www.1st-rootserver.de/

                      Kommentar


                      • #41
                        äh, ja, schon. Wenn du nur die ID der Gruppe in der Tabelle ablegst, brauchst du eigentlich diese Tabelle nicht, da du diese Information direkt beim User ablegen kannst. Deine Tabelle sollte noch um soviele Spalten erweitert werden, so viele Rechte du hast. Also die Spalte "termin_aendern", "news_aendern" etc. - so kanst du zu JEDER Gruppe genau definieren, was diese darf und was nicht. Und genau DAS sind ja auch die Felder, die du in deinem Array $rechte hast und in der if-Abfrage prüfst. Dieses System ist erweiterbar und veränderbar, d.h. du kannst später jederzeit die rechte einer Gruppe ändern, vergrößern oder beschneiden, in dem du die Rechte entweder auf 0 oder auf 1 setzt.
                        Also, deine Tabelle sollte so aussehen:

                        gruppe termin_aendernt news_aendern shop_aendern [...]
                        1 1 0 0 [...]
                        2 0 1 0 [...]
                        3 0 0 1 [...]
                        4 1 1 0 [...]
                        7 1 1 1 [...]

                        die Werte entsprechen dem Beispiel von eben bzw. basieren auf der Nennung von dir im 1.Beitrag des Themas.

                        Klarer geworden?

                        P.S.: Shit- meine "Formatierung" ist hin, alle Leerzeichen sind weg. Hoffe, du kannst die Tabelle trotzdem lesen.

                        P.P.S: Seltsam, irgendwie ist mir gerade diese Antwort abhanden gekommen. Wer weiß, wo die jetzt plötzlich auftaucht. Zum Glück hatte ich mir den Feldinhalt vorher in die Ablage kopiert.

                        Kommentar


                        • #42
                          habe jetzt die usergruppe so erweitert:

                          gruppe_id termine nachrichten shop termine_nachrichten termine_shop nachrichten_shop alles

                          1 1 0 0 0 0 0 0
                          2 0 1 0 0 0 0 0
                          3 0 0 1 0 0 0 0
                          4 0 0 0 1 0 0 0
                          5 0 0 0 0 1 0 0
                          6 0 0 0 0 0 1 0
                          7 0 0 0 0 0 0 1

                          ist das jetzt richtig?

                          cu
                          Gilbert
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #43
                            zum Schluß wäre noch ein link mit Logoout nicht schlecht.

                            Wie bekommen ich das hin?

                            cu
                            Gilbert
                            *winks*
                            Gilbert
                            ------------------------------------------------
                            Hilfe für eine Vielzahl von Problemen!!!
                            http://www.1st-rootserver.de/

                            Kommentar


                            • #44
                              nein, deine DB bzw. Tabelle ist ja total redundant. Wenn du zwei Felder "Termine" und "Nachrichten" hast, dann brauchst du doch nicht auch noch ein Feld "Termine_Nachrichten" -> um diesen Status abzubilden, mußt du doch nur bei beiden Feldern eine 1 eintragen. Nur so kannst du ziemlich einfach die Abfrage in allen Skripten ermöglichen. Sonst wird es eine ziemlich konfuse Abfragerei. Glaub mir.
                              also, die Tabelle, die du gerade eben geschrieben hast, müßte so lauten:

                              gruppe_id termine nachrichten shop

                              1 1 0 0
                              2 0 1 0
                              3 0 0 1
                              4 1 1 0
                              5 1 0 1
                              6 0 1 1
                              7 1 1 1

                              Es geht ja letztlich nur um DREI verschiedene Rechte (Termine, Nachrichten und Shop) und dabei dann noch die unterschiedlichen Kombinationen. Du kannst so wie hier bei jedem Punkt, der z.B. das Recht für Termine benötigt nur abfragen, ob $rechte[1]==1 -> dabei ist es egal, ob es die Rechtegruppe 1, 4 , 5 oder 7 ist. Alle diese Gruppen dürfen doch Termine ändern. Nach deinem System müßtest du jedesmal abfragen oder gruppe_id==1, 4 , 5 oder 7 ist. Das macht alles länger, unüberischtlicher, starrer und fehlerbehafteter.

                              Kommentar


                              • #45
                                sorry, für das Logout kannst du ein Skript aufrufen, welches mittels session_unregister("mypass","myuser") wieder deregistriert und somit die user.inc.php beim nächsten Aufruf automatisch $login_flag==false setzt. Vorausgesetzt es wurden nicht wieder user und passwort vom Formular übermittelt. Dann gibt's auch noch session_destroy(), welches alle Informationen zur Session löscht. Ist wohl der einfachste Weg für dich.

                                Kommentar

                                Lädt...
                                X