Fehler beim Login

BangOne

Grünschnabel
hi Leute, ich hoffe ihr könnt mir helfen;
ich hab folgendes Problem:
ich hab hier mal mein ersten Login geschrieben, mithilfe eines Buches (wo auch quellcode drin ist und ich mich auch an diesen gehalten habe)
wenn ich mich ans Buch halte, dann kommt wenn ich mich einlogge die Fehlermeldung "Sie sind bereits eingeloggt", wenn der benutzername falsch ist kommt "Benutzername falsch"(das einzige das funktioniert :rolleyes: ) und wenn ich garkein PW eingebe kommt "Sie sind bereits eingeloggt"
hier mal der quellcode von der login seite (name: login2.php):
PHP:
<?php

$sent      = $_POST["sent"];
$username  = $_POST["username"];
$kwort     = $_POST["kwort"];


$idle=120;
require('connect.php');
$tabellenname='user';

  if ($sent==1){
  $sql="SELECT kwort, ID, kennung, (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(zeit)) as time, zeit FROM $tabellenname WHERE username='$username'";
  $result=mysql_query($sql,$link) or die("Anfrage fehlgeschlagen: " . mysql_error());

     for ($i=0; $i<mysql_num_rows($result);$i++)
     {
     $ergebnis[$i]=mysql_fetch_array($result);
     }

   if(mysql_num_rows($result)==1){
     if($kwort!=$ergebnis[0][$kwort])
     {$meldung.="Ihr Passwort war falsch";}
      else{
       if($ergebnis[0][$kennung]==$sit)
       {$meldung.="Sie sind bereits eingeloggt";unset($username);}
       else{
	 if($ergebnis[0][$kennung]!='' AND $ergebnis[$i][$time]/60<$idle)
         {$meldung.="Es ist bereits jemand mit Ihren Benutzernamen eingeloggt";}
         else{
              $sitzung=uniqid('');
	      $IDuser=mysql_result($result,0,'ID'); 
              $sql="UPDATE $tabellenname SET ";
              $sql.="zeit=now(), ";             
              $sql.="kennung='$sitzung'";
              $sql.=" WHERE ID='$IDuser' ";
              $test=mysql_query($sql,$link) or die("Anfrage fehlgeschlagen: " . mysql_error());
              setcookie('sit',$sitzung);
              setcookie('IDuser', $IDuser);
              $meldung="Sie wurden eingeloggt als $username";


              }//von else von vorhandene abfrage

       }//von else kennung
     

      }//von else kennwort überprüfung   


   }//result von num rows = 1
   else {$meldung.="Kontrollieren sie Ihren Benutzernamen"; }

  }//sent=1


echo "<html><head><title>Login</title></head><body><div align=center>";
echo "<h2>$meldung</h2>";
echo "<h2>Bitte Benutzerinfos angeben</h2>";
echo "<form action='$PHP_SELF' method='post'>";
echo "<input type=hidden name=sent value=1>";
echo "<p>Benutzername: <input type=text name=username value='$username'><br>";
echo "<p>Passwort: <input type=text name=password value='$kwort'>";
echo "<br><br><input type=submit></form>";


?>

</div></body></html>



und hier der quellcode von der connect.php
PHP:
<?php

$dbname="meindatenbankname";
$link = mysql_connect("localhost", "meinbenutzername", "meinPW");
mysql_select_db($dbname, $link);


function benutzer()
{
   Global $link,$IDuser,$sit;
   $tabellenname='user';
   $sql="SELECT username FROM $tabellenname WHERE ID='$IDuser' AND kennung=$sit";
   $result=mysql_query($sql,$link)  or die("Anfrage fehlgeschlagen: " . mysql_error());
   if(mysql_num_rows($result)==1)
   {
   return mysql_result($result,0,'username');
   }


}


function recht($admin)
{

Global $link, $IDuser, $sit, $idle;
$pfad="http://bang.kilu.de/test/login2.php";
$tabellenname='user';
if (!$IDuser OR !$sit){$fehler=1;}
else {
      if(!$link){$fehler=2;}else{
        $sql="SELECT admin, zeit, kennung, (UNIX_TIMESTAMO()-UNIX_TIMESTAMP(zeit)) as time FROM $tabellenname WHERE ID=$IDuser AND kennung='$sit'";
        $result=mysql_query($sql,$link) or die("Anfrage fehlgeschlagen: " . mysql_error());
        if(mysql_num_rows($result)==1){
	if($admin==1 AND mysql_result($result,0,'admin')!=1){$fehler=1;}
 	if(mysql_result($result,0,'time')/60>$idle){$fehler=3;}	

	}
        

 
        }

      }//von else test -> !$IDuser OR !$sit){$fehler=1;


if($fehler)
{
  switch($fehler)
  {
  case 1:
  die("Sie haben keine Zugriffsrechte auf dieser Seite");
  break;
  case 2:
  die("Ein Datenbankfehler ist aufgetreten, versuchen sie es in wenigen Minuten nocheinmal.");
  break;
  case 3:
  die("Aufgrund zu langer Inaktivität sollten sie sich erneut einloggen.");  


  }



}


else {
$sql="UPDATE $tabellenname SET ";
$sql.=" zeit= now() ";
$sql.=" WHERE ID=$IDuser ";
mysql_query($sql, $link) or die("Anfrage fehlgeschlagen: " . mysql_error());
if(mysql_result($result,0,'admin')==1)
{return true;}
else{return flase;}

}

mysql_free_result($result);

}//funktion


?>

link:http://bang.kilu.de/test/login2.php
zum testen der Benutzername: Bangman und pw: bang <- könnt ihr ja selbst mal anschauen

danke
 
Setz mal den Fehlermeldungslevel auf die höchste Stufe, in dem du error_reporting(E_ALL); am Anfang des Skripts notierst, damit sämtliche Fehler gemeldet werden. Denn wo kommt beispielsweise die $sit-Variable her?
 
Zurück