login probleme

lifehunter

Erfahrenes Mitglied
servus,
ich habe folgendes problem. ich habe eine seite gebaut auf der man neuen user erstellen kann. das klappt auch alles soweit. ich habe eine tabelle in mysql erstellt die 7 felder enthält: ID, Username, kwort, admin, beschreibung, kennung und zeit.
mein script sieht so aus:

PHP:
<?php
require('userconnect.php');
if($sent==1)
{
$sql="SELECT kwort, ID, kennung, (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(zeit)) as ";
$sql.="time, zeit FROM $tabellenname WHERE username='$username' ";
$result=mysql_query($sql, $link);
if(mysql_num_rows($result)==1)
{
if(md5($kwort)!=mysql_result($result ,0,'kwort'))
{$meldung.="Bitte kontrollieren Sie ihr Kennwort";}
else
{
if(mysql_result($result,0,'kennung')==$sit AND
mysql_result($result,0,'time')/60<$idle)
{$meldung.="Sie sind bereits eingeloggt";
unset($username);}
else
{
if(mysql_result($result,0,'kennung')! ='' AND
mysql_result($result,0,'time')/60<$idle)
{$meldung.="Es ist bereits jemand mit Ihrem 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);
setcookie('sit', $sitzung);
setcookie('IDuser', $IDuser);
$meldung="Sie wurden eingeloogt als $username";
unset($username);
}}}}
else{$meldung.="Bitte kontrollieren Sie ihren Benutzernamen";}
}

echo"<html><head><title>LOGIN</titel ></head><body><div align=center>";
echo"<h2><font color=red>$meldung</font></h2>";
echo"<h2>Bitte die Benutzerinformationen eingeben</h2>";
echo"<form action='$PHP_SELF' method='post'>";
echo"<input type=hidden name=sent value=1>";
echo"<p>Benutzername</p>";
echo"<input type=text name=username value='$username'>";
echo"<p>Kennwort</p>";
echo"<input type=password name=kwort>";
echo"<br><br><input type=submit value=LOGIN>";
echo"</form>";
?>
</div></body></html>

nun zu meinem genauen problem:
jedes mal wenn ich versuchen mich einzugloggen gibt er "Sie sind bereits eingeloggt" als fehlermeldung aus. wenn mir jemand bei diesem problem helfen könnte wäre das echt super!
MfG Lifehunter

ps:userconnect.php sieht so aus
PHP:
<?php
$tabellenname='user';
$link = mysql_connect("localhost", "datenbankname");
mysql_select_db("datenbankname", $link);
$idle=10;
?>
 
Hi

ich frage mich jetzt irgendwie, warum Du da so um x Ecken denkest.

1. Es hat bereits jemand ihren Benutzernamen
2. Sie sind schon eingeloggt
3. Bitte kontrollieren Sie den Benutzernamen.

Alle 3 Meldungen könntest Du Dir ersparen, wenn Du die Logintabelle auf Username and Passwort filterst. Ist das ok, also mysql_num_rows == 1, dann setzen der Cookies, entspr. Ausgabe oder Weiterleitung ... ansonsten Fehlermeldung oder Rückleitung zur Loginseite.

Überdies kannst Du das Vorhandenseins eines Cookies (wenn bereits eingeloggt) auch abfragen bzw. nutzen. Wenn jemand bereits eingeloggt ist, dann Anzeige eines Logout-Buttons, um sich wieder abzumelden, ansonsten Formular oder Login-Button. Sind die Cookies gefüllt (User ist erfolgreich angemeldet), würde ein erneutes Anmelden gar nicht vorkommen können.

Ich gehe jetzt mal davon aus, dass sich der User bereits vorher über einen Benutzernamen und Passwort registriert hat.
 
ich habe das so "ausführlich" gemacht, damit der user nicht im dunkeln tappt falls er sich nicht anmelden kann.
also da ich die idee zu diesem script aus einem lehrbuch habe, denke ich mir, müsste das eigenltich gehen. wenn es aber keine fehlerlösung gibt, wäre es net wenn man mir das noch ma bisschen ausführlicher erklärt wie ich des anders machen soll ^^ weil sonst versteh ich des net
 
Hi

stehen die Register_globals auf on? Ansonsten müsstest Du den Variablen noch die Werte aus den Feldern zuweisen.

Hier ist ein Leerzeichen hinter dem ID
$IDuser=mysql_result($result,0,'ID ');

Hier steckt ein Leerzeichen zwischen ! und =.
if(mysql_result($result,0,'kennung')! ='' AND

Das kann allerdings jetzt auch beim Kopieren passiert sein.

Ich kann ansonsten keine Fehler sehen, habs auch kurz mal getestet, funktioniert ohne Problem, auch das Update.

Jetzt kann man geteilter Meinung darüber sein, ob man dem User jeden Furz, wo es dran liegen soll, wenn er sich nicht einloggen kann, erklären muss. Ich bin der Meinung, man sollte alles so kurz und knapp wie möglich halten.
 
also die leerzeichenfehler sind bei mir im script nciht. weiß auch nciht warum die hier sind.
was meinst du mit den register_globals auf on?
 
Zurück