Problem mit login tutorial

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

  • Problem mit login tutorial

    Hallo,

    ich habe folgendes Problem mit dem Login-Script.
    Wenn ich die richtigen Anmeldedaten eingebe, bekomme ich dennoch die Meldung 'Ihre Anmeldedaten waren nicht korrekt'.

    Name und Passwort sind als U_Name und Passwort in einer Tabelle abgespeichert.

    Hier die login.php
    PHP-Code:
    <?
    error_reporting(E_ALL); 
    session_start();
    include 'sessionhelpers.inc.php';
    if (isset($_POST['login']))
    {
        $userid=check_user($_POST['name'], $_POST['pass']);
        if ($userid!=false)
            login($userid);
        else
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
    }
    if (!logged_in())
        echo '<form method="post" action="login.php">
            <label>Benutzername:</label><input name="name" type="text"><br>
            <label>Passwort: </label><input name="pass" type="password" id="pass"><br>
            <input name="login" type="submit" id="login" value="weiter">
        </form>';
    else
        echo '<a href="logout.php">Ausloggen</a>';
    echo '<p /><a href="logged_in.php">Check</a>';
    ?>
    und hier die sessionhelpers:
    PHP-Code:
    <?

    error_reporting(E_ALL); 
    function connect()
    {
        $con= mysql_connect('meinserver','nutzer','passwort') or die(mysql_error());
         mysql_select_db('tabelle',$con) or die(mysql_error());
    }



    function check_user($name, $pass)
    {
        $sql="SELECT ID    
         FROM users    
         WHERE U_Name='".$name."' AND Passwort=MD5('".$pass."')    
         LIMIT 5";
        
        $result= mysql_query($sql) or die(mysql_error());
        if ( mysql_num_rows($result)==1)
        {
         
            $user=mysql_fetch_assoc($result);
            return $user['ID'];
        }
        else
            return false;
    }

    function login($userid)
    {
        $sql="UPDATE users    
         SET UserSession='".session_id()."'    
         WHERE ID=".$userid;
         mysql_query($sql);
    }

    function logged_in()
    {
        $sql="SELECT ID
        FROM users
        WHERE UserSession='".session_id()."'
        LIMIT 1";
        $result= mysql_query($sql);
          return ( mysql_num_rows($result)==1);
    }

    function logout()
    {
        $sql="UPDATE users
        SET UserSession=NULL
        WHERE UserSession='".session_id()."'";
         mysql_query($sql);
    }

    connect();
    ?>
    Danke schonmal im Voraus
    Zuletzt geändert von Germanjosh; 24.09.2006, 19:53.

  • #2
    bitte erst komplett lesen UND befolgen: http://www.php-resource.de/forum/sho...threadid=50454

    Kommentar


    • #3
      Hab's jetzt mal formatiert und das Errorreporting eingefügt. Mit meinem Problem bin leider trotzdem noch nicht weiter.

      Kommentar


      • #4
        Wie heißt das Feld in der DB?

        U_Name oder U-Name?

        Mach testausgaben der Query in check_user().
        nutze error_reporting so wie es in den Regeln steht.

        Kommentar


        • #5
          Hallo in der DB heißt's U_Name - hab's oben im Text ausgbessert

          ich erhalte folgende Ausgabe für
          PHP-Code:
          echo $result
          Resource id #4Ihre Anmeldedaten waren nicht korrekt!

          Kommentar


          • #6
            echo result ist ja schonmal ganz nett und fördert auch nichts unerwartetes zu tage.

            aber ich will mehr sehen.
            Gib die Queries aus,
            gib alle vars aus.
            mysql_error().

            erscheint etwas unerwartetes?

            Kommentar


            • #7
              soweit ich das beurteilen kann, bekomme ich alle Werte geliefert die ich haben will.

              in der check_user springt er mir aber in den else-teil.

              sql fehler bekomme ich soweit keine

              PHP-Code:
                else
                   echo  
              mysql_error(). "\n";
              echo 
              $name"\n";
              echo 
              $pass ."\n";
              echo 
              $sql ."\n";
              echo 
              $result"\n";
                      return 
              false
              liefert mir:

              admin 1234 SELECT ID FROM users
              WHERE U_Name='admin'
              AND Passwort=MD5('1234') LIMIT 5

              Resource id #4 Ihre Anmeldedaten waren nicht korrekt!
              Zuletzt geändert von Germanjosh; 24.09.2006, 21:22.

              Kommentar


              • #8
                Okay, Testausgaben sehen sauber aus.

                Jetzt gib mal bitte die Query ins phpMyAdmin ein und lasse die die ergebnisse anzeigen. Was kommt raus?

                if(keine ergebnisse gefunden)
                echo "Wie hast du die Spalte Passwort definiert?";

                Kommentar


                • #9
                  echo
                  "feld: Passwort
                  Typ: varchar
                  länge/set: 20
                  kollation: latin1_general_ci
                  null: not null";

                  echo
                  "und was mach ich jetzt? ;-)";

                  Kommentar


                  • #10
                    Du setzt die länge für das Passwort mal schön auf 32 (so lang ist ein md5 hash in der Regel) und gibst das passwort noch mal neu in die DB ein. Danach gehts wieder.

                    Kommentar


                    • #11
                      ich werd' verrückt...... das funktioniert danke.


                      die 20 zeichen beim passwort rührten daher, weil ich ein Anmeldeformular ohne MD5 hatte.

                      bitte hilf' doch einem armen Anfänger noch bei folgendem Problem:

                      ich möchte per

                      PHP-Code:
                      '".$_REQUEST['Passwort']."' 
                      das Passwort mit MD5 verschlüsselt an die db weitergeben. wie mach' ich das?

                      Kommentar


                      • #12
                        md5() oder MD5() suchs dir aus.

                        Kommentar


                        • #13
                          PHP-Code:
                          mysql_query("INSERT INTO $meinetabelle (Passwort)
                          VALUES ('"
                          .$_REQUEST[md5('Passwort')]."', $DatabasePointer); 
                          PHP-Code:
                          <form action="<?php echo$_SERVER['PHP_SELF']; ?>
                          method="post">

                          Passwort: <input  maxlength="20" name=md5("Passwort") type="text"><br>
                              
                                <input name="Send" type="submit" value="Absenden">
                                </form>
                                  
                                <?php
                          im Eingabeformular ist das Passwort im klartext sichtbar...

                          Kommentar


                          • #14
                            dafür gibts

                            <input type="password"..

                            Das sollte dir aber schon 1000 mal im internet begegnet sein. (hat mit md5 nichts zu tun.)

                            Kommentar


                            • #15
                              ok... jetzt funzts...

                              war mir leider bist jetzt noch nicht begegnet.


                              dankeschön

                              Kommentar

                              Lädt...
                              X