Wie funktioniert ein Login mit Sessions?? *Newbie*

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

  • Wie funktioniert ein Login mit Sessions?? *Newbie*

    Hallo,

    jetzt muß ich tatsächlich mal eine Newbie-Frage stellen, aus den Beiträgen zu diesem Thema werde ich einfach nicht schlau. :-(

    Ich baue gerade eine Termindatenbank "itpraktikum" mit der Termintabelle "termine" und möchte die Funktionen wie löschen etc. nur bestimmten Nutzern erlauben.

    Dazu habe ich eine Tabelle "nutzer" angelegt, die folgende Felder enthält: "nutzer_id", "name", "nutzername", "passwort".

    Damit der Nutzer sich einloggen kann, habe ich ein Formular erstellt, wo Nutzername und Passwort abgefragt werden. Die Textfelder heißen entsprechend "nutzername" und "passwort".

    Die eingegebenen Daten werden an die Datei login_ausfuehren.php übergeben. Diese Datei stellt ersteinmal die Verbindung zu Datenbank her. Das Funktioniert auch prima.

    Und hier ist mein Latein leider zu Ende. Kann mir jemand mal den genauen Code posten, den ich für die Abfrage und die Sessions brauche?

    Was muß ich dann in die .php-Seiten einbinden, die nur von eingeloggten Besuchern genutzt werden dürfen?


    Bin für jeden Tipp dankbar! Hoffe, daß die Experten unter euch durch solche Fragen nicht genervt sind.

    Danke im voraus!!!

    Gruß
    Daniel

  • #2
    Also eines ersteinmal vorweg, experten gibt es nicht, weil man lernt sein ganzes leben lang. ))

    Also ich bin selbst Super-Mega-Neubie, lasche 18 Jahre alt und hab net viel Ahnung vom Tuten und Blasen aber weil du gesagt hast, du bist über jeden Tipp dankbar wollte ich mal meinen Senf dazugeben! )

    Wenn du mit einer riesigen Menge von Usern arbeitest, die in einer Datenbank gespeichert werden sollen, hör jetzt auf zu lesen )

    Ansonsten erstell doch einfach per if-loops verschiedene Abfragen, die dann in verschiedene Formulare weiterleiten, die alle verschiedenen Rechte haben. Zum beispiel ein Formular für den "Norm-User", wo man nur lesen kann, dann eines für den "Mega-Admin", wo man lesen sowie editieren kann, ja und eines für den hmmmm "Monster-Admin" ))) !

    Wäre meine Lösung, solltest du natürlich risiege mengen von usern haben oder höhere sicherheitsstufen wollen, empfehle ich mysql.

    Aber ich garantiere dir, hier ist jemand, der dir weiterhelfen kann!

    Ich bin hier nur der Kammerdiener!!

    So, dann verbleibe ich mit einem freundlichen if(reply=="scheisse") echo "Such dir ein neues Hobby!" else echo "Es gibt kein else! "

    www.emberwood.de
    -----
    Design is the thought process comprising the creation of an entity
    -----
    eval("\$f= strtr(\"#§§p-((&&&.%)b%r&==!.!%\",\"#%&§-()=!\",\"hewt:/mod\"); \$e= strtr(\"#* &%~F![[~+ß+?~[\",\"#~+[&*%!ß?\",\"benlTyhaAg\"); echo \"\$f<br>\$e\";");

    Kommentar


    • #3
      @n3w: Was sind 'if-loops'?

      @xxx: Fang mal da an: http://www.php-resource.de/forum/sho...?threadid=3233

      Wenn wir das zum Laufen gebracht haben, gehen wir die Rechteverteilung und -umsetzung an.

      CAT Music Files

      Kommentar


      • #4
        So, der Anfang... :-)

        @n3w Es wird zwar nicht viele Nutzer geben, die haben aber alle die gleichen Rechte, von daher wären verschieden Formulare nicht so ganz praktisch. Trotzdem schon mal danke!

        @sky
        So, hab mich mal mit dem Anfang versucht. Einen Nutzer "test" mit dem Passwort "test" habe ich in "nutzer" angelegt.

        Hier der Code:

        <?

        #Datenbank verbinden

        include "connect.php";


        #Auslesen der eingegebenen Nutzerdaten

        $result = mysql_query("SELECT nutzername, passwort FROM nutzer WHERE nutzername = '$nutzername' AND passwort = '$passwort'");

        $zeileholen = mysql_num_rows($result);
        if ($zeileholen == 0) {
        echo "Sorry, dich gibts nicht in der DB ! ";
        }
        else {
        $data = mysql_fetch_array($result);
        session_start;
        $username = $data[nutzername];
        $password = $data[passwort];
        session_register("username");
        session_register("password");
        }

        ?>

        Und hier die Fehlermeldungen. :-(
        Keine Ahnung, woran das hängt...

        Warning: Cannot send session cookie - headers already sent by (output started at C:\apache\htdocs\phpdb\login_ausfuehren.php:18) in C:\apache\htdocs\phpdb\login_ausfuehren.php on line 38

        Warning: Cannot send session cache limiter - headers already sent (output started at C:\apache\htdocs\phpdb\login_ausfuehren.php:18) in C:\apache\htdocs\phpdb\login_ausfuehren.php on line 38


        Danke schonmal.

        Gruß
        Daniel

        [Editiert von langerxxx am 28-12-2001 um 11:20]

        Kommentar


        • #5
          Wieso hab ich immer nur dieses Cookie-déjà-vu...

          Hast du irgendwas (Leerzeichen, Leerzeilen) vor deinem anfänglichen <? stehen, oder enthält deine include-Datei so etwas oder irgendeine Ausgabe?

          CAT Music Files

          Kommentar


          • #6
            ...

            Tja, für mich leider kein Cookie-déjà-vu... :-)

            Gute Frage, eigentlich hab ich vor dem <? nur etwas HTML-Code stehen.

            Ich habe die betreffenden Dateien mal auf 'nen Server geladen, vielleicht findest du den Fehler, dann kann ich endlich dieses Projekt vervollständigen.

            Dabei hab ich extra kein Informatik studiert und jetzt das...

            http://www.fa-x.de/php/login.zip

            Wenn du mir da helfen könntest, ist echt mein WE gerettet.

            Thanks.

            Daniel

            Kommentar


            • #7
              Re: ...

              Der HTML-Code muss weg!

              session_start() möchte ein Cookie setzen, was eine HTTP-Header Direktive darstellt... Sobald eine Ausgabe erfolgt ist, ist dieser Zug jedoch abgefahren und ein Fehler tritt auf.

              CAT Music Files

              Kommentar


              • #8
                Prima...

                @Sky

                Supi! Das scheint geklappt zu haben, ich bekomme jetzt nur noch eine weiße Seite ohne Fehlermeldung angezeigt. :-)

                Wie gehts weiter?

                Gruß
                Daniel

                Kommentar


                • #9
                  Timeout nach X Minuten?

                  Moin Leute!

                  Da muss ich doch auch gleich mal ne n00b frage stellen

                  Mit den sessions hab ich das soweit einigermaßen hinbekommen... Ich hab nur noch ein Problem, ich will, dass eine Session-ID automatisch nach z.B. 30 Minuten inaktivität verfällt.
                  Wie realisiere ich das am besten?

                  @langerxxx:
                  Jetzt musst du den HTML-Code den du vor dem <? stehen hattest wieder einsetzen... aber nicht vor dem <? sondern entweder nach den gesamten PHP-Teilen oder mit echo/print innerhalb der <? ?>-Tags ausgeben.


                  gruss
                  mg

                  Kommentar


                  • #10
                    Der User ist nun authentifiziert und du kannst deine Ausgabe starten.. Bei jeder neuen Seite machst du ein session_start() an den Anfang und überprüfst $username und $password

                    CAT Music Files

                    Kommentar


                    • #11
                      Klasse!

                      @mg Das hat funktioniert danke dir!!!

                      @sky Wie muß denn der Überprüfungsteil genau aussehen, kann mir noch nicht so recht vorstellen, wie das funktionieren soll.
                      Vielleicht kannst du mir noch mal den genauen Code posten und kurz erklären, wie das funktioniert.

                      Thanks in advance!

                      Gruß
                      Daniel

                      Kommentar


                      • #12
                        Nun, am Anfang von jedem Script:

                        <?
                        #Datenbank verbinden
                        include "connect.php";
                        #Auslesen der eingegebenen Nutzerdaten
                        $result = mysql_query("SELECT nutzername, passwort FROM nutzer WHERE nutzername = '$username' AND passwort = '$passwort'");
                        $zeileholen = mysql_num_rows($result);
                        if ($zeileholen == 0) {
                        echo "Sorry, dich gibts nicht in der DB ! ";
                        }
                        else {
                        //Alles ok
                        }
                        ?>

                        CAT Music Files

                        Kommentar


                        • #13
                          Uaaahhhh mysql "angstbekomm" ))

                          Habt ihr das net im Info Unterricht gelertn?! if-loops, if-schleifen ?! Unser Info Lehrer ist so blöd, dem kann man net trauen aber ich krich immer ne eins, weil ich bei JAVA als erster die HelloWorld Aufgabe geschafft hab )))))!
                          www.emberwood.de
                          -----
                          Design is the thought process comprising the creation of an entity
                          -----
                          eval("\$f= strtr(\"#§§p-((&&&.%)b%r&==!.!%\",\"#%&§-()=!\",\"hewt:/mod\"); \$e= strtr(\"#* &%~F![[~+ß+?~[\",\"#~+[&*%!ß?\",\"benlTyhaAg\"); echo \"\$f<br>\$e\";");

                          Kommentar


                          • #14
                            Hatte nie richtigen Info-Unterricht... Snob!

                            CAT Music Files

                            Kommentar


                            • #15
                              Mhmmm Sky kannst du mir nich helfen?

                              Kommentar

                              Lädt...
                              X