Login Probleme beim Script von MrHappiness

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

  • Login Probleme beim Script von MrHappiness

    Hi.
    Hab das Tut von MrHappiness gelesen und das als Standalone funktioniert auch ohne Probleme.
    Jetzt wollte ich das in meine Seite einbauen, wo es leider nicht so recht funktionieren will.
    Die Login Tabelle befindet sich jetzt in der Header.php, da dort das linke Menü mit eingebunden ist.
    Von dort wird auf die login.php zugegriffen.
    Die sessionhelpers.inc.php heißt bei mir functions.php und liegt im Admin Ordner.
    Wenn ich mich jetzt einloggen will kommt immer: Ihre Anmeldedaten waren nicht korrekt!
    Aber alle Daten sind korrekt.
    Hier mal der Code:

    Header.php
    PHP-Code:
    <?
    session_start();
    include("admin/functions.php");
    ...
    if (!logged_in()) 
                echo '
                <div id="logindiv" style="border-bottom: 1px solid #036;">
               <form method="post" action="login.php">
                    <h6>Member Login</h6>
                        <a name="loginbox" id="loginbox"></a>
                        <input type="text" size="15" name="username"/>
                        <input type="password" size="15" name="userpass"/>
                        <p>
                            <input name="remember" type="checkbox" id="remember" value="1"
                            style="border:0px none ;" />Eingeloggt bleiben
                        </p>
                            <input name="login" type="submit" id="login" value="Login" />
                        <p>
                            <a href="index.php">Passwort vergessen</a>
                     <a href="registrieren.php">Registrieren</a>
                        </p>
                </form>
                </div>';
            else 
                echo'
                <div id="logindiv" style="border-bottom: 1px solid #036;">
                    <h4>User Menü</h4>
                    <ul style="padding-bottom: 0;">
                    <li>
                          <a href="logout.php">Logout</a>                    
                    </li>
                    </ul>
                </div>
            ';
    login.php
    PHP-Code:
    <? 
    session_start(); 
    include("admin/functions.php");
    if (isset($_POST['login'])) 

        $userid=check_user($_POST['username'], $_POST['userpass']); 
        if ($userid!=false) 
        {
            login($userid); 
            echo 'Password-DB <B>',$userid,'!'; 
        }
        else 
        {
            echo 'Status ',$_POST['username'],'<br />';
            echo 'Ihre Anmeldedaten waren nicht korrekt!'; 
        }

    ?>
    functions.php
    PHP-Code:
    <? 
    function connect() 

        $con= mysql_connect('localhost','root','') or die(mysql_error()); 
        mysql_select_db('login',$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(); 
    ?>

    Und mal so nebenbei...in den Dateien, wo ich die Header Datei include muß da auch ein session_start(); hin? Ich meine das ist ja eh schon in der header.php drin.
    Schonmal Danke im Vorraus.

    Mfg
    jack2003
    Zuletzt geändert von jack2003; 10.09.2005, 10:57.

  • #2
    und wo hast du die Funktion connect aufgerufen? mysql_error() sollst du überall einsetzen, wenn du mit der DB arbeitest.

    Kommentar


    • #3
      na die funktion connect wird doch in der functions.php ganz unten aufgerufen.
      in dem tut wird die auch nicht nochmal extra aufgerufen.

      mfg jack2003

      Kommentar


      • #4
        ups, sorry, war doch etwas früh gewesen

        hm ... dann stimmen die Daten nicht überein, wie hast du das PW in die DB geschrieben auch mit MD5 oder einfach so?

        Kommentar


        • #5
          ja das ist auch per md5.
          genau gesagt so:
          PHP-Code:
          $datum=date('Y-m-d'); 
          $kennwort=MD5('$_POST[passwort]');
          mysql_query("INSERT INTO users 
          (UserName,UserPass,UserSession,UserMail,UserRegDate) 
          VALUES 
          ('
          $_POST[name]','$kennwort','NULL','$_POST[email]','$datum')"); 
          Weiß wirklich nicht woran es noch liegen kann.

          Mfg
          jack2003
          Zuletzt geändert von jack2003; 11.09.2005, 10:59.

          Kommentar


          • #6
            ja, und genau hier liegt der Hund begraben.
            Original geschrieben von jack2003
            ja das ist auch per md5.
            genau gesagt so:
            PHP-Code:
            $kennwort=MD5('$_POST[passwort]'); 
            mach dich mal schlau über die Verwendung von ' und " und vor allem wie man mit Variablen um geht. Warum zum Teufel packst du die Variable in ' ein, nur weil MD5 einen String erwartet, denkst du dass du damit erreichst oder wie? Manchmal will ich wirklich wissen, aus welchen Büchern die Leute so 'nen Schrott gelernt haben, oder war das die eigene Kreation gewesen

            Kommentar


            • #7
              argh...was ein ' zuviel anrichten kann

              Und es war meine eigene Kreation. War ich wohl ein bißel voreilig mit meinen '.
              Aber jetzt funktionierts wunderbar. Besten Dank nochmal.

              Mfg
              jack2003

              Kommentar

              Lädt...
              X