Mein PW Schutz hat eine macke

Obi_Wan

Mitglied
Also ich habe ja mel ein pw schutz gebastelt mit rechten usw. Aber irgetnwie scheint da ein kleiner bug drin zu sein. Immer der letzte user der in der DB steht kann sich net einloggen :( . Weis jemand warum???
 
hast du vielleicht irgendwelche schleifen mit arrays benutzt und vergessen, dass arrays bei "0" und nicht bei "1" anfangen...

aber ansonsten wär der code nicht schlecht...
 
So hier ist der Code
<?php
$dbhost = "xxx";
$dbname = "xxx";
$dbuser = "xxx";
$dbpwd = "xxx";
switch ($aktion){

case "login1":


$dbhandle = mysql_connect ($dbhost, $dbuser, $dbpwd);
mysql_select_db($dbname);
if(! $dbhandle) {
echo "Can´t connect to $dbhost as $dbuser.<br>";
echo "Error: ".mysql_error();
die();
}

$query = "SELECT * FROM atlantis_crew WHERE Name='$username' and pwd='$password' and 'Rechte'";
$result = mysql_query("SELECT * FROM atlantis_crew");
while ($row = mysql_fetch_array($result)) {
$rang = $row[Rechte];

$read = mysql_fetch_array($result);
if(($username == $read[Name]) and ($password == $read[pwd]))
{
if($rang == "0"){
echo "<center><b>Sorry, $username, aber du wurdest vom Admin gesperrt.</b></center>";
}
elseif($rang == "1"){
echo "<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt bist normaler User.</p>";
}
elseif($rang == "2"){
echo "<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt Moderator Rechte.</p>";
}
elseif($rang == "3"){
echo "
<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt Admin Rechte</p>";
}
}
else{
echo"
Du hast mist gebaut, $username";
}
}
break;

default:

echo"
<div align =\"center\">
Atlantis Admin login
<form method=\"post\" action=\"$PHP_SELF?aktion=login1\">
<p><input type=\"text\" name=\"username\" maxlength=\"20\"> Username <br></p>
<br><input type=\"password\" name=\"password\" maxlength=\"20\"> Password <br><br>
<input type=\"submit\" name=\"Login\">
</div>
</form>";

break;

}
?>
 
ich hab mal ein bisschen rumgebastelt...
du hast da einige sachen ziemlich umständlich gemacht...
ich denke mal, so gehts.

PHP:
<?php
$dbhost = "xxx";
$dbname = "xxx";
$dbuser = "xxx";
$dbpwd = "xxx";
switch ($aktion){

case "login1":


$dbhandle = mysql_connect ($dbhost, $dbuser, $dbpwd);
mysql_select_db($dbname);
if(! $dbhandle) {
echo "Can´t connect to $dbhost as $dbuser.<br>";
echo "Error: ".mysql_error();
die();
}

$query = "SELECT * FROM atlantis_crew WHERE Name='$username' and pwd='$password'";
$result = mysql_query($query);
$read = mysql_fetch_array($result);

if($row[Name] != "" && $row[pwd] != ""){

$rang = $row[Rechte];

if($rang == "0"){
echo "<center><b>Sorry, $username, aber du wurdest vom Admin gesperrt.</b></center>";
}
elseif($rang == "1"){
echo "<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt bist normaler User.</p>";
}
elseif($rang == "2"){
echo "<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt Moderator Rechte.</p>";
}
elseif($rang == "3"){
echo "
<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt Admin Rechte</p>";
}
}

else{
echo"
Du hast mist gebaut, $username";
}

break;

default:

echo"
<div align =\"center\">
Atlantis Admin login
<form method=\"post\" action=\"$PHP_SELF?aktion=login1\">
<p><input type=\"text\" name=\"username\" maxlength=\"20\"> Username <br></p>
<br><input type=\"password\" name=\"password\" maxlength=\"20\"> Password <br><br>
<input type=\"submit\" name=\"Login\">
</div>
</form>";

break;

}
?>
 
PHP:
<?
echo "
<form method='post' action='".$PHP_SELF."'>
<input type='hidden' name='aktion' value='login1'>";
?>

das dürfte eher gehen. Einmal $PHP_SELF besser eingebunden und aktion per hidden-field übertragen, ich hab die Erfahrung gemacht, dass der bei <form action="index.php?action=1"> das ganze nach dem dateinamen nicht mit überträgt.

edit:
so auch für das board mal ganz ausführlich...
 
Zuletzt bearbeitet:
Ich habe einiges am Code noch editieren müssen. Aber jetzt hat der immer noch probleme user zu identifizieren.
<?php
$dbhost = "xxx";
$dbname = "xxx";
$dbuser = "xxx";
$dbpwd = "xxx";
switch ($aktion){

case "login1":


$dbhandle = mysql_connect ($dbhost, $dbuser, $dbpwd);
mysql_select_db($dbname);
if(! $dbhandle) {
echo "Can´t connect to $dbhost as $dbuser.<br>";
echo "Error: ".mysql_error();
die();
}

$query = "SELECT * FROM atlantis_crew WHERE Name='$username' and pwd='$password'";
$result = mysql_query($query);
$read = mysql_fetch_array($result);

if($row[Name] == $username and $row[pwd] == $password){

$rang = $row[Rechte];

if($rang == "0"){
echo "<center><b>Sorry, $username, aber du wurdest vom Admin gesperrt.</b></center>";
}
elseif($rang == "1"){
echo "<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt bist normaler User.</p>";
}
elseif($rang == "2"){
echo "<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt Moderator Rechte.</p>";
}
elseif($rang == "3"){
echo "
<p> Willkommen im Internen Bereich der Atlantis, $username</p>
<p>$username, du besitzt Admin Rechte</p>";
}
}

else{
echo"
Du hast mist gebaut, $username";
}

break;

default:

echo"
<div align =\"center\">
Atlantis Admin login
<form method=\"post\" action=\"".$PHP_SELF."?aktion=login1\"
<p><input type=\"text\" name=\"username\" maxlength=\"20\"> Username <br></p>
<br><input type=\"password\" name=\"password\" maxlength=\"20\"> Password <br><br>
<input type=\"submit\" name=\"Login\">
</div>
</form>";

break;

}
?>

Wer mag kann mir auch gleich einen richtigen PW schutz basteln mit administration. Aber an liebsten mach ichs ja selber. Aber irgentwas läuft da immer schief.
 
Zurück