Datenbank gestützes Loginscript

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

  • #46
    so habe mir jetzt ein logout.php geschrieben.

    doch da kommt die Fehlermeldung:
    Warning: Trying to destroy uninitialized session in c:\apache\htdocs\login\logout.php on line 2

    Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\login\logout.php:2) in c:\apache\htdocs\login\logout.php on line 3


    Die logout.php sieht so aus:
    <?php
    session_destroy();
    header ("Location: nav.php");
    ?>
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

    Kommentar


    • #47
      habs schon habe vergessen die user.inc.php eizubinden.

      So jetzt funktionier das Loginscript.

      Du hatteste geschrieben beim Aufruf der nav.php an der Position if($login_flag == true)
      kann man den zweiten Frame mit einer neuen Seite laden.

      Du hast auch ein Script aufgeschrieben:
      <script>window.frames[1].location.href='login_okay.php';</script>

      Wie bekomme ich das jetzt in die nav.php, das wenn der User angemeldet ist die login.php mit der will.php ausgetauscht wird.

      Der Framname in der die login.php läuft heißt 'text'.
      Der Framname in der die nav.php läuft heißt 'nav'.

      Ich hoffe dann hab ich alles.
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #48
        Code:
        <?php 
        include("user.inc.php"); 
        include("func.inc.php"); 
        if ($login_flag==true) {
           echo "<$ffa>Sie sind ein geloggt"; 
           echo "<script>window.frames[1].location.href='will.php';</script>";
           }
        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
        ?>
        vorausgesetzt, daß der Frame Nr.2 (= frames[1]) der "text"-Frame ist.

        Kommentar


        • #49
          geht nicht, Javascript Fehler
          Zeile:1
          Zeichen:1
          Fehler:'window.frames.1.location' ist kein Objekt
          Code:0
          URL:nav.php

          hier kommt der Aufbau der index.html
          <html>

          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
          <title>Webshop Adminbereich Muster</title>
          <meta name="GENERATOR" content="PFE 32">
          </head>

          <frameset cols="25%,*" border="0" frameborder="0">
          <frame name="login" src="nav.php">
          <frame name="text" src="login.php">
          <noframes>
          <body>

          <p>Diese Seite verwendet Frames. Frames werden von Ihrem Browser aber nicht
          unterstützt.</p>

          </body>
          </noframes>
          </frameset>

          </html>

          Frame eins ist login
          und Frame zwei ist text

          Was ist jetzt schon wieder Falsch??? (RAUF HAARE!)
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #50
            sorry, ersetzt einfach das "window." durch ein "top." im JavaScript

            Kommentar


            • #51
              Ja fertig. Es läuft, jetz nur noch Online bringen und der WEBMASTER-BEREICH ist fertig.

              Hab vielen Dank für die vielen Antworten die dir ein Newbie gestellt hat.

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

              Kommentar


              • #52
                Habe das ganze um ein Recht erweitert, und diese Recht wird mir nicht angezeigt.

                hier die nav.php
                <?php
                include("user.inc.php");
                include("func.inc.php");

                if ($login_flag==true)
                {
                echo "<$ffa>Sie sind ein geloggt.<br>";
                echo "<script>top.frames[1].location.href='will.php';</script>";
                echo "<a href=logout.php>logout</a><br><br><$ffe>";
                }
                else
                {
                echo "<$ffa>Sie sind noch nicht angemeldet.<br><br>";
                echo "<script>top.frames[1].location.href='webmaster.php';</script>";
                echo "<a href=login.php target=text>Login</a><br><$ffe>";
                }

                if ($rechte[1]==1 || $rechte[4]==1 || $rechte[5]==1 || $rechte[7]==1 || $rechte[8]==1)
                echo "<$ffa><a href=datei1.php>Termine ändern<br></a><$ffe>"; // hier die Ausgabe, wenn Rechte gesetzt

                if ($rechte[2]==1 || $rechte[4]==1 || $rechte[6]==1 || $rechte[7]==1 || $rechte[8]==1)
                echo "<$ffa><a href=datei2.php>Nachrichten ändern<br></a><$ffe>"; // hier ausgabe des Links für das Recht

                if ($rechte[3]==1 || $rechte[5]==1 || $rechte[6]==1 || $rechte[7]==1 || $rechte[8]==1)
                echo "<$ffa><a href=datei3.php>Shop ändern<br></a><$ffe>"; // hier Link für neues Recht

                if ($rechte[8]==1)
                echo "<$ffa><a href=datei4.php>Userverwaltung<br></a><$ffe>";


                ?>

                entsprechend habe ich auch eine neue Spalte in der Datenbank angelegt. Aber wenn ich mich mit dem User anmelde der das Recht hat, wird mir die Userverwaltung nicht angezeigt. Alle anderen Rechte werden angezeigt. Woran liegt das BrainBug?
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #53
                  aber die restlichen drei Rechte bekommst du angezeigt? Wie sieht den deine Tabelle genau aus?
                  Oder bau mal folgende Ausgabe ein:

                  for($i=0;$i<count($rechte);$i++) echo $rechte[$i]." | ";

                  dann wird dir das gesamte Array ausgegeben, welches die Rechte nach der Anmeldung enthält. Dann siehst du, ob das richtige eingelesen wurde.
                  Gib Bescheid, wenn du mehr weißt...

                  Kommentar


                  • #54
                    Die tabelle hat nun folgendes Aussehen:
                    usergruppe

                    gruppe_id termine nachrichten shop admin
                    1 1 0 0 0
                    2 0 1 0 0
                    3 0 0 1 0
                    usw
                    8 1 1 1 1

                    hier die Ausgabe von for:
                    Sie sind ein geloggt.
                    logout

                    8 | 1 | 1 | 1 | 1 | | | | | |
                    Termine ändern
                    Nachrichten ändern
                    Shop ändern



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

                    Kommentar


                    • #55
                      mach ich ein zusätzliches Recht dazu, wird mir die userverwaltung angezeigt.
                      Also
                      if ($rechte[8]==1 || $rechte[1]==1)

                      geht es, aber wieso nicht wenn nur
                      if ($rechte[8]==1)
                      ist?
                      *winks*
                      Gilbert
                      ------------------------------------------------
                      Hilfe für eine Vielzahl von Problemen!!!
                      http://www.1st-rootserver.de/

                      Kommentar


                      • #56
                        STOP!
                        Ich glaube, du hast das Auslesen falsch verstanden. In deinem Array $rechte stehen nicht 8 Einträge für 8 Gruppen, sondern für (mittlerweile) 4 Rechte.
                        Der erste Index steht für die GruppeId selbst. Praktisch, denn dann "beginnt" sozusagen die eigentliche Zählung bei 1.

                        $rechte[1] steht für Recht auf Termin ändern
                        $rechte[2] steht für Recht auf Nachricht ändern
                        $rechte[3] steht für Recht auf Shop ändern
                        $rechte[4] steht für Recht auf Admin-Bereich

                        d.h. wenn jemand sich einloggt und ein "Terminänderer" ist -> dann ist er Gruppe 1 -> Rechte werden ausgelesen -> Array enthält dann 1|0|0|0
                        jemand mit Recht "Termin-Shop-Änderer" hat das Array 1|0|1|0

                        wird es klar, welches Prinzip angewandt wird? du hast bei deinem letzten Code die Abfragen nämlich falsch aufgebaut. Hier mal der Code, wie er eigentlich funktionieren müßte:
                        Code:
                        <?php 
                        include("user.inc.php"); 
                        include("func.inc.php"); 
                        
                        if ($login_flag==true) 
                        { 
                        echo "<$ffa>Sie sind ein geloggt.<br>"; 
                        echo "<script>top.frames[1].location.href='will.php';</script>"; 
                        echo "<a href=logout.php>logout</a><br><br><$ffe>"; 
                        } 
                        else 
                        { 
                        echo "<$ffa>Sie sind noch nicht angemeldet.<br><br>"; 
                        echo "<script>top.frames[1].location.href='webmaster.php';</script>"; 
                        echo "<a href=login.php target=text>Login</a><br><$ffe>"; 
                        } 
                        
                        if ($rechte[1]==1) 
                        echo "<$ffa><a href=datei1.php>Termine ändern<br></a><$ffe>"; // hier die Ausgabe, wenn Rechte gesetzt 
                        
                        if ($rechte[2]==1) 
                        echo "<$ffa><a href=datei2.php>Nachrichten ändern<br></a><$ffe>"; // hier ausgabe des Links für das Recht 
                        
                        if ($rechte[3]==1) 
                        echo "<$ffa><a href=datei3.php>Shop ändern<br></a><$ffe>"; // hier Link für neues Recht 
                        
                        if ($rechte[4]==1) 
                        echo "<$ffa><a href=datei4.php>Userverwaltung<br></a><$ffe>"; 
                        ?>
                        wie dir sicher auffällt, ist im Gegensatz zu deinem Code die if-Abfrage auch wesentlich kürzer geworden. Falls ich weiter vorne (ich glaub fast) mal auch genau den falschen Weg beschrieben haben sollte, sorry, bin vorher schon mal durcheinandergekommen und habe die Themen vom Forum verwechselt. Sorry, habe gerade nachgeschaut, war wirklich mein Denkfehler . Aber oben ist nun definitiv richtig.

                        Kommentar


                        • #57
                          Also steht $rechte[ ]==1 für die einzelnen Rubriken Termnie Nachrichten Shop und Admin

                          wenn ich jetzt eine neue Rubrik z.B. Forum anlege ist das den $rechte[5], wenn ich es jetzt richtig verstanden habe, müßte es so sein oder?
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #58
                            jep! Genau so ist es.

                            Kommentar


                            • #59
                              Morgen BrainBug

                              Frage wie kann man in der user.inc.php:
                              <?
                              session_start();

                              if (session_is_registered("myuser") && session_is_registered("mypass")) {
                              $user=$myuser;
                              $passwort=$mypass;
                              }

                              include("../inc/data_db.inc.php");
                              $db = mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw") or die (mysql_error());
                              mysql_select_db("$MySQL_Data");
                              $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 {
                              // 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;
                              $gruppe = mysql_result($res, 0, "gruppe"); // 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;
                              }
                              ?>
                              Den Benutzernamen und das Passwort auf Groß und Kleinschreibung überprüfen?
                              Beispiel:
                              Admin|global ist auch gleich admin|Global aber in der Datenbank steht admin|global

                              Momentan überprüft das Script scheinbar nur ob die Buchstaben gleich sind ohne zuprüfen ob die Buchstaben wirklich gleich sind. Soll heißen wenn in der Datenbank ein großes K steht muß es auch ein großes K sein.

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

                              Kommentar


                              • #60
                                äh

                                keine Ahnung. Eigentlich wird nach dem jetztigen Query eine genauer Überprüfung des Eintrags gefordert. Es heisst ja nicht "where usr like '%$user%'" oder so, dann wäre der Query case-insensitiv. Aber so... hmmm, ersetzt doch mal die Query-Zeile folgendermaßen:
                                Code:
                                $query="select * from user where (usr='$user') and (pwd='$passwort')"
                                $res = mysql_query($query);
                                echo "Query: ".$query."<br>";
                                so siehst du schon mal, ob er die Groß- und Kleinschreibung richtig an die DB übergibt. Vielleicht liegts auch an MySQL bzw. die Konfiguration? Test mal mit obiger Änderung...

                                P.S.: Auch dir einen guten Morgen, Wotan

                                Kommentar

                                Lädt...
                                X