Login mit Hilfe von PHP und mySQL

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

  • Login mit Hilfe von PHP und mySQL

    moinsen,

    ich kann mich mit dem script nicht anmelden.
    immer wenn ich einen username + das gültige passwort angebe, sagt er, das ich halt die falschen daten habe bzw. das sie nicht vorhanden sind.

    meine mysql tabelle:
    UserID int(11) primary key | NULL | auto_increment
    UserName varchar(30)
    UserPass varchar(32)
    UserSession varchar(32) NULL
    UserMail varchar(150)

    ok habe die UNIQUE KEY´s rausgemacht, weil ich mir ein script in php dazu gebastelt habe.


    formular.php:
    PHP-Code:
    if (!logged_in())
    {
    echo 
    '<form method="post" action="login/login.php">
    <label>Benutzername:</label>
    <input name="username" type="text"><br>
     <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
    <input name="login" type="submit" id="login" value="Einloggen">
    </form>'
    ;
    }
    else
    {
    echo 
    "Hallo ";
    echo 
    "<br>";
    echo 
    '<a href="login/logout.php">Ausloggen</a>';


    sessionhelpers.inc.php:
    PHP-Code:
    <?
    function connect()
    {
        $con=mysql_connect('localhost','user','pass') or die(mysql_error());
         mysql_select_db('datenbank',$con) or die(mysql_error());
    }

    function check_user($name, $pass) 

    $sql="SELECT UserId 
    FROM users 
    WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') 
    LIMIT 1"; 
    $result= mysql_query($sql) or die(mysql_error()); 
    if ( mysql_num_rows($result)==1) 

    $user=mysql_fetch_assoc($result); 
    return $user['UserId']; 

    else 
    return false; 


    function login($userid) 

    $sql="UPDATE users 
    SET UserSession='".session_id()."' 
    WHERE UserId=".$userid; 
    mysql_query($sql); 


    function logged_in() 

    $sql="SELECT UserId 
    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(); 
    ?>

    login.php(halt zum überprüfen ob es den usernamen gibt):
    PHP-Code:
    <?
    session_start();
    include 'sessionhelpers.inc.php';
    if (isset($_POST['login']))
    {
        $userid=check_user($_POST['username'], $_POST['userpass']);
    }

    if ($userid!=false)
    {
        login($userid);
        echo '<a href="$site">Du hast dich erfolgreich eingeloggt und wirst sofort weitergeleitet...</a>';
    }
    else
    {
        echo '<a href="$site">Ihre Anmeldedaten waren nicht korrekt! Zurück zur Anmeldung</a>';
    }
    ?>
    sieht irgendwer den fehler oder kann mir sagen, wie ich ne fehlermeldung ausgeben kann dafür?

    MfG Groove

  • #2
    Was ist denn die genaue Fehlermeldung?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      immer wenn ich einen username + das gültige passwort angebe, sagt er, das ich halt die falschen daten habe bzw. das sie nicht vorhanden sind.
      das da ist die einzigste meldung die ich bekomme.
      ich bekomme keine fehlermeldung...

      Kommentar


      • #4
        Ändere die Funktion check_user mal so ab:
        PHP-Code:
        function check_user($name$pass

        $sql="SELECT UserId 
        FROM users 
        WHERE UserName='"
        .$name."' AND UserPass=MD5('".$pass."') 
        LIMIT 1"

        die(
        $sql);
        $resultmysql_query($sql) or die(mysql_error()); 
        if ( 
        mysql_num_rows($result)==1

        $user=mysql_fetch_assoc($result); 
        return 
        $user['UserId']; 

        else 
        return 
        false

        Was kommt raus?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Ich habe genau das selbe Problem und wollte grad hier nachfragen

          Habe den Quellcode um das "die($sql);" erweitert. Nu spuckt er folgendes aus: "SELECT UserId FROM freshn_users WHERE UserName='admin' AND UserPass=MD5('tutorial') LIMIT 1".
          www.freshn.de

          Kommentar


          • #6
            Bitte nutze auch mysql_error(), wie im Beispiel zu sehen bzw. in den Forenregeln erklärt.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von wahsaga
              Bitte nutze auch mysql_error(), wie im Beispiel zu sehen bzw. in den Forenregeln erklärt.
              Jopp, hab ich!

              Nu spuckt er folgendes aus: "SELECT UserId FROM freshn_users WHERE UserName='admin' AND UserPass=MD5('tutorial') LIMIT 1".
              www.freshn.de

              Kommentar


              • #8
                also das gleiche,
                also keine fehlermeldung,
                also findet sql nur keinen usernamen mit dem spezifizierten passwort,
                also hast du nur keinen entsprechenden user angelegt,
                also funktioniert dein script.

                Kommentar


                • #9
                  hm habe es mal eingesetzt, bei mir kommt die selbe meldung, aber ich habe werte in meienr datenbanktabelle. und ich habe die dnan auch richtig in das formular eingegeben, aber trotzdem werd ich nicht eingeloggt...
                  und warum werden meine von dem formular gesendeten $username und $userpass plötzlich als $name und $pass in de funktion wiedergegeben?

                  Kommentar


                  • #10
                    Bei mir hat es nun geklappt. Leider kann ich nicht nachvollziehen wo genau ich den Fehler gemacht habe.
                    www.freshn.de

                    Kommentar


                    • #11
                      Also der code ist korrekt. Wird wohl an den Daten liegen.

                      und warum werden meine von dem formular gesendeten $username und $userpass plötzlich als $name und $pass in de funktion wiedergegeben?
                      schau dir die funktionsdefinition an:

                      PHP-Code:
                      function check_user($name$pass
                      Da steht, dass der erste parameter innerhalb der funktion durch $name und der zweite durch $pass angesprochen werden kann.

                      Wäre auch irgendwie dumm, wenn die variablen die man einer funktion übergibt, immer den gleichen namen haben müssten.

                      Kommentar


                      • #12
                        ja... das erinnert mich gerade an meine OCM dtunde in der schule... c++...
                        da haben wir konstruktoren und strings verwendet... ist beinahe so ähnlich und ich mag es nicht ^^

                        aber back 2 topic...

                        ich habe es nun hinbekommen mich anzumelden...
                        problem:

                        in der datenbank datelle steht mein user:
                        user | passwort
                        ------------------------------
                        maxi | (der md5 code)
                        lol | (der gleiche md5 code wie beim user "maxi")

                        und da ist shcon das problem... immer wenn ich mich neu registriere, trägt er immer das gleiche paswort ein. das ist seh ungewöhnlich.
                        vielleicht kann man mir da weiterhelfen?

                        und nun zum einloggen...
                        ich kann mich mit dem user "maxi" und mit dem user "lol" wenn ich bei beiden das zugehörige paswort mit angebe mich nicht anmelden.
                        doch kann ich mich anmelden wenn ich das passwort weglasse... kennt.
                        hier ist der quellcode zum eintragen in die tabelle:

                        PHP-Code:
                            $eintrag "INSERT INTO users (UserName, UserPass, UserMail, UserPLZ, UserStadt, UserBeschreibung) VALUES 
                        ('
                        $UserName', MD5('$UserPass'), '$UserMail', '$UserPLZ', '$UserStadt', '$UserBeschreibung')";
                            
                        $eintragen mysql_query($eintrag$connection) or die("Fehler: ".mysql_error()); 
                        Zuletzt geändert von grooveapple; 24.08.2006, 15:15.

                        Kommentar


                        • #13
                          1. Brich deinen Code um! Immer das gleiche

                          und da ist shcon das problem... immer wenn ich mich neu registriere, trägt er immer das gleiche paswort ein. das ist seh ungewöhnlich.
                          error_reporting an? Vermutlich hast du ne undefinierte Variable. Und speicherst daher den md5 hash von "" (nichts) in die DB.

                          und nun zum einloggen...
                          ich kann mich mit dem user "maxi" und mit dem user "lol" wenn ich bei beiden das zugehörige paswort mit angebe mich nicht anmelden.
                          doch kann ich mich anmelden wenn ich das passwort weglasse...
                          Ja, das bestätigt meine Vermutung. Auf die Idee bist du nicht selbst gekommen?

                          hier ist der quellcode zum eintragen in die tabelle:
                          Wie gesagt, brich ihn um. Und in zukunft auch mal testausgaben und errorreporting an, das erspart einiges.

                          Kommentar


                          • #14
                            sry.

                            joa habe eben mal
                            PHP-Code:
                            error_reporting(E_ALL); 
                            eingesetzt.
                            UserName ist undefiniert, aber auch nur wenn ich das
                            PHP-Code:
                            $UserName $_POST["UserName"]; 
                            davor wegnehme

                            Kommentar


                            • #15
                              was soll das jetzt heißen?

                              der Username wird doch schließlich korrekt in die DB eingetragen.

                              Kommentar

                              Lädt...
                              X