Loginscript: Login geht nicht, trotz richtiger Zugangsdaten

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

  • #16
    Ok, das ist einleuchtend.

    Dann hat also entweder derjenige der mal den Code
    getippt hat, nen falschen oder verkehrten Code
    verwendet um Daten aus der DB abzufragen
    oder der falsche oder verkehrte Daten aus der DB liefert.
    lg
    Stefan

    Kommentar


    • #17
      Original geschrieben von Skywalker031
      Ich habe nun deinen umgeschriebenen Code
      anstelle des alten ersetzt. Wenn man nun die
      Seite aufruft, bekomme ich einen HTTP 500 Internen
      Serverfehler angezeigt - sprich die Seite lässt sich
      nicht aufrufen
      Du sollst den Code anschauen und daraus lernen und nicht per Copy-Paste verwursten.

      Kommentar


      • #18
        Ich habe mir den Code auch vorher angesehen
        und versucht soweit zu verstehen.

        "trim" bedeutet z.b. ein Leerzeichen am Anfang
        und Ende einer Zeichenkette zu entfernen.

        Das %2 hat mit der Formatierung zu tun, soweit ich
        mich erinnern kann, was wiederum mit "sprintf" zu tun hat.

        Ich habe im Endeffekt doch nur den alten HTML-Code
        und den Start-PHP-Bereich mit deinem Code kombiniert.

        So wie ich deinen Code verstanden habe, hätte es doch
        gehen müssen.

        Was ist jetzt nicht richtig oder wo habe ich was falsch
        gemacht...
        lg
        Stefan

        Kommentar


        • #19
          Keine Ahnung, kenn ich deinen aktuellen Code?

          Ich hab übrigens eine Klammer in meinem Code vergessen.

          Kommentar


          • #20
            Was steht in der DB?
            Welche Query wird zu DB gesendet?

            Halte diese beiden Infos nebeneinander und du wirst sehen warum die DB nichts liefert.
            Wir werden alle sterben

            Kommentar


            • #21
              @combie

              Was steht in der DB? (siehe im Bildanhang)

              Welche Query wird zu DB gesendet?
              PHP-Code:
              $user=mysql_fetch_object(mysql_query
              ("SELECT id, username, passwort, aktiv 
              FROM benutzerdaten 
              WHERE username='"
              .$username."'")); 
              Es soll die id, der username, das passwort und der aktiv(-stand) ausgelesen werden.

              All das ist in der db auch vorhanden... oder nicht?


              @h3ll

              Keine Ahnung, kenn ich deinen aktuellen Code?

              Ich hab übrigens eine Klammer in meinem Code vergessen.
              meinen aktuellen Code kannst du dir hier ansehen:
              link

              Ich habe deinen Code nochmal durchgesehen und
              habe aber an keiner Stelle eine fehlende Klammer
              entdeckt. Wo soll sie denn fehlen?
              Angehängte Dateien
              lg
              Stefan

              Kommentar


              • #22
                Original geschrieben von Skywalker031
                dabei bin ich eigentlich gar nicht so schwer von Begriff... *kopfkratz*
                Was das mit den Grundlagen angeht und den Tutorials, das hab ich mal vor langer Zeit gemacht, hat mir aber nicht wirklich geholfen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  Parse error: parse error in ... on line 70
                  line 70:
                  PHP-Code:
                  $result mysql_query(sprintf($sqlmysql_real_escape_string($username), md5($passwort)); 
                  schau dir die klammern an.... also GENAU an
                  wieviele funktionen öffnest du?
                  wieviele werden korrekt geschlossen ?
                  tipp: 4 auf und 3 zu

                  Kommentar


                  • #24
                    Liebster Skywalker031.....
                    Welches Query du senden möchtest, ist mir schon klar!
                    Aber welches du WIRKLICH sendest ist mir nicht klar.
                    Dieses welches du mir zeigst beinhaltet noch PHP Variablen. Es ist also nicht dieses welches MySQL zu sehen bekommt, sondern nur jenes welches du dem PHP überreichst.

                    Du sollst die IST Zustände vergleichen und nicht das was du dir wünscht.
                    Dass deine Wünsche nicht mit dem IST konform gehen, wissen wir alle schon.

                    Alle Klarheiten beseitigt?
                    Zuletzt geändert von combie; 02.05.2009, 15:57.
                    Wir werden alle sterben

                    Kommentar


                    • #25
                      @Peacie:

                      hi, das mit der Klammer geht klar, habs auch sofort
                      geändert und siehe da, die seite lässt sich nun
                      problemlos öffnen.

                      @combie:

                      Diese derzeitige Abfrage stammt aus dem Code von
                      H3ll.

                      Bei diesem query

                      PHP-Code:
                      } else {
                                
                      $sql "
                                    SELECT
                                        id, username, passwort, aktiv
                                    FROM
                                        benutzerdaten
                                    WHERE
                                        username = '%s' AND passwort = '%s'
                                    LIMIT
                                        1
                                "
                      ;
                                  
                      $result mysql_query(sprintf
                                  
                      ($sqlmysql_real_escape_string
                                  
                      ($username), md5($passwort))); 
                      hat H3ll die $sql Variable im query verwendet, warum
                      das wiederum versteh ich auch nicht, denn man hätte
                      den Inhalt von $sql auch so ins query packen können
                      oder?
                      Was ich nicht verstehe ist, das im $sql der username
                      und das passwort auf %2 ausgelesen wird und nicht
                      nach dem Inhalt, so wie ich das sehe, kann die Eingabe
                      des Users "username" verglichen mit %2 natürlich nicht
                      identisch sein - wenn ichs richtig verstanden habe.

                      Was jedoch nun die Fehlermeldung beim Login erzeugt
                      weiss ich nicht, auch wenn ich weiss, was sie bedeutet:

                      "Access denied for user 'wwwrun'@'localhost' (using password: NO)"
                      -> Zugang zur DB nicht erlaubt,
                      weil kein PW verwendet wurde (hoffentlich richtig verstanden)
                      lg
                      Stefan

                      Kommentar


                      • #26
                        hat H3ll die $sql Variable im query verwendet, warum das wiederum versteh ich auch nicht, denn man hätte den Inhalt von $sql auch so ins query packen können oder?
                        Damit man sieht was bei der DB ANKOMMT !



                        echo $sql;

                        Kommentar


                        • #27
                          Egal was in $sql steht, er kann es der DB gar nicht schicken. Denn er kann sich überhaupt nicht mit der DB verbinden. Access denied.

                          Zeig mal bitte den Code rund um mysql_connect(). Zuvor überzeuge dich bitte selbst durch Testausgaben vom Inhalt der Variablen, die du dieser Funktion übergibst.

                          Kommentar


                          • #28
                            Also hab auch noch etwas intensiver geschaut
                            und den Fehler gefunden, warum nach der
                            Eingabe der Logindaten, die db nicht connectiert
                            werden konnte - bei der Angabe der include-datei
                            war ein schreibfehler unterlaufen.

                            Desweiteren habe ich den Code von H3ll
                            um einen Teil des Originalscriptes erweitert,
                            um nach dem bestätigten Login weiter zu gelangen:

                            PHP-Code:
                            else {
                                   echo 
                            'Login erfolgreich.<br>';
                                   
                            //registriere die sesson id, mit der ID des users
                                   
                            $_SESSION["id"] = $user->id;
                                   
                            //leite zu main.php weiter
                                   
                            header("Location: main.php");
                                   exit;
                                 } 
                            Allerdings hab ich jetzt ein weiteres Problem:
                            Dieses Script sah in der Ursprungsfassung
                            eine Session-ID-Kontrolle vor, die, wenn die
                            Session-ID nicht korrekt war, den Besucher
                            nicht in den geschützten Bereich liess, sondern
                            wieder auf die index.php zurück bringen soll.

                            Wenn man nach dem korrekten Login weiter-
                            geleitet werden sollte sieht es so aus als wenn
                            die main.php ganz kurz aufgerufen wird und
                            anschliessend sofort wieder die index.php geladen wird.

                            Das würde doch bedeuten, das die Session-ID
                            nicht stimmt oder ist vielleicht im Code der main.php
                            ein Fehler, bzw. ist die Variablenfestlegung
                            $_SESSION["id"] = $user->id;
                            verkehrt?

                            Hier mal der Code, der main.php:

                            PHP-Code:
                            <?
                            //starte die session
                            session_start();
                            //include die config datei
                            include ("config.php");
                            //ab hier soll auf den header gewartet werden
                            ob_start();

                            //wenn Session nicht exisitiert...
                            if (!isset($_SESSION["id"])){
                                  //befördere den User vor die Tür ^^
                                  header ("Location: index.php");
                                  }

                            //Variable für query festlegen
                            $sql = "
                                        SELECT
                                            username
                                        FROM
                                            benutzerdaten
                                        WHERE
                                            id='".$_SESSION["id"]."'
                                    ";

                            //falls sie doch exisitert,
                            //hol den usernamen aus der datenbank...
                            $query=mysql_fetch_object(mysql_query($sql));

                            //und speichere ihn in der variable "username" ab
                            $username = $query->username;

                            //header warten - Ende
                            ob_end_flush();
                            ?>

                            <html>
                            <head>
                            ...
                            lg
                            Stefan

                            Kommentar


                            • #29
                              Original geschrieben von Skywalker031
                              Also hab auch noch etwas intensiver geschaut
                              und den Fehler gefunden, warum nach der
                              Eingabe der Logindaten, die db nicht connectiert
                              werden konnte - bei der Angabe der include-datei
                              war ein schreibfehler unterlaufen.
                              Hätte dein PHP Script dann nicht eigentlich ein Fehler ausgeben sollen? Mustt mal für Debug Zwecke error_reporting( E_ALL ); an den Anfang des Scriptes setzen, erleichtert dir einiges...

                              In der Datei in der $_SESSION["id"] = $user->id; gesetzt wird, ist dort auch vorher ein session_start gemacht worden?


                              Und dann noch zuletzt:
                              Wieso benutzt du ob_start(); und ob_end_flush(); wenn dazwischen ohnehin keine Ausgaben gemacht werden?
                              Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

                              Denk' mal drüber nach!

                              Kommentar


                              • #30
                                Original geschrieben von Click
                                Hätte dein PHP Script dann nicht eigentlich ein Fehler ausgeben sollen? Mustt mal für Debug Zwecke error_reporting( E_ALL ); an den Anfang des Scriptes setzen, erleichtert dir einiges...

                                In der Datei in der $_SESSION["id"] = $user->id; gesetzt wird, ist dort auch vorher ein session_start gemacht worden?


                                Und dann noch zuletzt:
                                Wieso benutzt du ob_start(); und ob_end_flush(); wenn dazwischen ohnehin keine Ausgaben gemacht werden?
                                Ja, möglich wärs gewesen, dass es einen Fehler hätte
                                ausgeben können... das tat es aber nicht.
                                Werde deinen Tipp mit dem error_reporting( E_ALL );
                                verwenden.

                                Ja, in der Datei in der $_SESSION["id"] 0 $user->id;
                                gesetzt wird, gibt es vorher ein session_start.

                                du kannst dir die aktuelle index.php gern unter
                                index.rar herunterladen.

                                Wegen dem ob_start(); und ob_end_flush();
                                möchte ich hier auch nochmal anmerken, dass dieses
                                Script nicht von mir stammt - lediglich einige Änderungen
                                und Anpassungen. Diese beiden Dinge sind u.a. nicht
                                von mir geschrieben/programmiert worden.
                                lg
                                Stefan

                                Kommentar

                                Lädt...
                                X