Quakenet "login" Tutorial

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

  • #16
    also Schuld an der hässlichen Formatierung
    ist das "echo" am Anfang jeder Zeile , das man auch umgehen könnte
    (wie bisher bei mir) mit <?php und ?>, gell?


    aber ich komme nicht zu meiner Fehlersuche:
    hab bei debugging nochmal gesucht und finde
    eigentlich immer nur error reporting... oder print r.
    Ja, jetzt kommt wieder (mit Recht) Fehlersuche=Grundlage.
    Aber den Anfang hatte ich doch schon!!!!!!!!!!
    ich weiss nicht weiter.
    Traurige Smilies einsetzen muss ich auch noch lernen...

    Kommentar


    • #17
      Dann wird wohl $_SESSION['ID'] nicht gesetzt sein, wenn ich das jetzt richtig gesehen habe

      Session gestartet? Übergeben?
      Für Rechtschreibfehler übernehme ich keine Haftung!

      Kommentar


      • #18
        PHP-Code:
        if(isset($_GET['action']) AND ("logout" == $_GET['action'])) 
        auf die schnelle fiel mir folgendes auf.

        letzteres solltest du umdrehen:
        PHP-Code:
        if(isset($_GET['action']) AND ($_GET['action'] == 'logout')) 
        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #19
          also Schuld an der hässlichen Formatierung
          ist das "echo" am Anfang jeder Zeile
          jain, schuld sind eigentlich nur die fehenden tabs am anfang der zeile. das mit den echos kann man haben wie man will. kommt auch auf den einsatz/code an.


          Dann wird wohl $_SESSION['ID'] nicht gesetzt sein, wenn ich das jetzt richtig gesehen habe
          wenn dem sp wäre, göbs ne notice.

          @pepsi: was ist an tesausgaben so schwer. überprüfe ob der code das tut, was du erwartest.

          Kommentar


          • #20
            Original geschrieben von TobiaZ

            wenn dem sp wäre, göbs ne notice.
            Dann wird wohl die id vorher vermurkst, da dies meiner Meinung nach der einzige Weg zu seinem Fehler ist, wenn ich den Code richtig im Kopf umformatiert habe
            Für Rechtschreibfehler übernehme ich keine Haftung!

            Kommentar


            • #21
              @Kropff: Gibt es einen besonderen Grund, weswegen er die Bedingung umdrehen sollte? Denn ändern dürfte das ja nichts.
              Nieder mit der Camel Case-Konvention

              Kommentar


              • #22
                sorry, hast natürlich recht. ich hab ihn was weiter oben schonmal gekürzt. hatte aber nicht mehr im kopf dass er auf isset() prüft. zumal in Session[id] natürlich (später) mal alles mögliche drin stehen könnte.

                @pepsi: also überprüen, warum id nicht in der session steht.

                Kommentar


                • #23
                  Original geschrieben von Griecherus
                  @Kropff: Gibt es einen besonderen Grund, weswegen er die Bedingung umdrehen sollte? Denn ändern dürfte das ja nichts.
                  eigentlich nicht.

                  als erfahrener Programmierer lässt es sich so besser lesen (wie ein buch). aber für anfänger ist andersru, eigentlich sogar besser, weil dann der fehler einfaches = statt == auch als solcher von PHP "erkannt" wird.

                  Kommentar


                  • #24
                    so übergeben:

                    aus der Hauptseite:
                    PHP-Code:
                    include "inc/config.php"
                       include 
                    "db.inc.php";
                       
                    // die Konfigurationsdateien lesen.  
                       // Session starten wenn ?section=admin geöffnet wurde 
                       
                    if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {  
                       
                    session_start(); 
                    hab schon ausprobiert in der admin session_start();
                    einzugeben, aber dann wird gemeckert,
                    dass sie schon gestartet ist.
                    Also gibt es die session id !?

                    Huch, Ihr habt schon was geantwortet, danke
                    aber ich schicke das jetzt ab.
                    (die Umkehrung (Kropff) ) ist wohl dasselbe in grün. Trotzdem dankeschön!

                    Kommentar


                    • #25
                      Das Ganze scheitert jetzt aber nicht daran, dass die Funktion login_right() das eingegebene Passwort hasht, das Passwort in der DB aber als Klartext abgelegt wurde, oder?
                      Nieder mit der Camel Case-Konvention

                      Kommentar


                      • #26
                        das wäre cool.

                        Also wenn der Code diesem Tut entspringt, ist das echt schlecht.
                        Das ist der OOP-Ansatz den Happy oder wars Haxe hier gepostet hat, doch deutlich besser.

                        ich habe deinen Code jetzt mal aufs wesentliche gecleant:

                        PHP-Code:
                        <?php 

                        error_reporting
                        (E_ALL); 
                        include 
                        "db.inc.php";



                        /***
                        * Logout
                        */
                        if(isset($_GET['action']) && $_GET['action'] == 'logout')


                            
                        session_destroy(); 
                            die(
                        '<p>Sie haben sich ausgeloggt. Um wieder in den Adminbereich
                                zu kommen müssen sie sich wieder Einloggen</p>'
                        );

                        }



                        /***
                        * Login
                        */
                        if(isset($_POST['UserID'], $_POST['Password']))
                        {
                            if(!empty(
                        $_POST['UserID'])) 
                                die(
                        '<p>Bitte wählen sie einen Benutzernamen aus.</p>');

                            if(
                        login_right(addslashes($_POST['UserID']),addslashes($_POST['Password'])))
                                  
                        $_SESSION['ID'] = $_POST['UserID'];
                              else
                                  die(
                        '<p>Ungültiges Password.</p>');
                        }
                        elseif(!isset(
                        $_SESSION['ID']))
                        {
                            
                            
                        //
                            // HIER DEIN LOGIN-FORMULAR...
                            //
                            
                        }



                        /***
                        * Der Adminbereich
                        */
                        if(isset($_SESSION['ID']))
                        {  

                            
                        //
                            // HIER DER ADMINBEREICH
                            //

                        }

                        ?>
                        In nem vernünftigen Script würde der Admin-Bereich auch noch komplett raus fliegen und statt dessen direkt nach dem Login auf eine weitere Datei weitergeleitet.

                        Kommentar


                        • #27
                          hash / hasht hatte ich noch nicht. (Smilie)

                          Aber gebe ich ein Fantasie-Password ein,
                          kommt Fehlermeldung: soll wieder Benutzernamen eingeben.

                          (@Kropff verstanden / besserer Code wenigstens)

                          PHP-Code:
                          function login_right($id$pass)    {  
                             
                          $sql "SELECT    
                             COUNT(*) as Anzahl   
                             FROM              
                             users          
                             WHERE         
                             ID = '"
                          .$id."' AND      
                             Password = MD5('"
                          .$pass."');";    
                             
                          $result mysql_query($sql) OR die(mysql_error());  
                             
                          $row mysql_fetch_assoc($result);  
                             
                          mysql_free_result($result);     
                             return 
                          $row['Anzahl'];   
                             } 

                          Kommentar


                          • #28
                            Password = MD5('".$pass."');";
                            und was steht in der DB?

                            wenn du über myadmin rein gehst, kannst du dein passwort dann sehen oder steht da eine wilde zahlen/buchstabenkombi?

                            aus wie vielen zeichen besteht diese?

                            Kommentar


                            • #29
                              Original geschrieben von pepsi

                              PHP-Code:
                              function login_right($id$pass)    {  
                                 
                              $sql "SELECT    
                                 COUNT(*) as Anzahl   
                                 FROM              
                                 users          
                                 WHERE         
                                 ID = '"
                              .$id."' AND      
                                 [U]Password = MD5('"
                              .$pass."');[/U]";    
                                 
                              $result mysql_query($sql) OR die(mysql_error());  
                                 
                              $row mysql_fetch_assoc($result);  
                                 
                              mysql_free_result($result);     
                                 return 
                              $row['Anzahl'];   
                                 } 
                              Die Stelle, die ich an deinem SQL unterstrichen habe, hasht das eingegebene Passwort mit SQLs MD5()-Funktion. Jetzt sagst du mir nur noch, dass du das Passwort, dass du über phpmyadmin eingetragen hast, nicht gehasht, sondern einfach so (als Klartext) gespeichert hast, und dann können wir alle Feierabend machen...
                              EDIT:
                              @Tobi: das ist jetzt unmenschlich schnell von dir gewesen...
                              Zuletzt geändert von Griecherus; 10.01.2007, 16:51.
                              Nieder mit der Camel Case-Konvention

                              Kommentar


                              • #30
                                zwei minuten reaktionszeit, ich kanns besser!

                                Kommentar

                                Lädt...
                                X