LoginScript von Matthias (mrhappiness)

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

  • LoginScript von Matthias (mrhappiness)

    Link: http://www.php-resource.de/tutorials/read/38/1/


    Hallo, habe das Script durchgearbeitet und auch alle Anweisungen befolgt.

    Wenn ich mich einloggen will, bekomme ich nun aber immer die Fehlermeldung:

    Ihre Anmeldedaten waren nicht korrekt!


    Ich habe schon mehrfach passwort überprüft, die Verschlüssleung aus dem Script genommen und auch das Passwort unverschlüsselt in der Datenbank gespeichert.

    Folgende zwei Quellcodeausschnitte zur Ansicht:


    Hier habe ich nichts großartig geändert, einfach nur die Loginfelder in einer Tabelle untergebracht:
    PHP-Code:
    <?PHP
    session_start
    ();
    include 
    'sessionhelpers.inc.php';
    if (isset(
    $_POST['login']))
     {
     
    $userid=check_user($_POST['username'], $_POST['userpass']);
     if (
    $userid!=false)
      {
      
    login($userid);
      }
     else
      {
      echo 
    'Ihre Anmeldedaten waren nicht korrekt!';
      }
     }
    if (!
    logged_in())
     { 
     
    ?>
     <form method="post" action="gbadmin.php">
     <table>
     <tr>
     <td>Benutzername:</td>
     <td><input name="username" type="text"></td>
     </tr>
     <tr>
     <td>Passwort:</td>
     <td><input name="userpass" type="password" id="userpass"></td>
     </tr>
     <tr>
     <td colspan="2"><input name="login" type="submit" id="login" value="Einloggen"></td>
     </tr>
     </table>  
     </form>
     <?PHP
     
    }
    else
     {
      echo 
    '<a href="logout.php">Ausloggen</a>';
      echo 
    '<p /><a href="logged_in.php">Check</a>';
      }
    ?>
    Hier habe ich die sessionhelpers.inc.php
    PHP-Code:
    <?

    function connect()
    {

        $con= mysql_connect('localhost','********','*******') or die(mysql_error());
         mysql_select_db('********',$con) or die(mysql_error()); 
    }

    function check_user($name, $pass)
    {
        $sql="SELECT id
        FROM admin
        WHERE username='".$name."' AND password='".$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 admin
        SET session='".session_id()."'
        WHERE id=".$userid;
         mysql_query($sql);
    }

    function logged_in()
    {
        $sql="SELECT id
        FROM admin
        WHERE session='".session_id()."'
        LIMIT 1";
        $result= mysql_query($sql);
          return ( mysql_num_rows($result)==1);
    }

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

    connect();
    ?>

  • #2
    function check_user() => id != UserId

    ... du gibst einen nicht existierenden wert aus der funktion zurück.
    Kissolino.com

    Kommentar


    • #3
      Ok danke, das wars.

      Eine Stelle vergessen anzupassen.

      Kommentar


      • #4
        hast sich erledigt bitte post löschen
        Zuletzt geändert von Laire; 11.08.2005, 10:57.

        Kommentar


        • #5
          $id ist in diesem Fall 'ne lokale Variable, die zerstört wird, nachdem die Funktion terminiert. Entweder gibst du $id als Returnwert zurück, was zu empfehlen ist, oder $id als globale Var. in der Funktion deklarieren.

          Kommentar

          Lädt...
          X