Es gibt viele Probleme mit Ihrem Code, der Hauptgrund dafür, dass Sie einen Fehler erhalten, ist $usertype
und $userstatus
sind nicht vordefiniert und nicht validiert.
Aber meiner Meinung nach ist es kein Hauptproblem mit Ihrem Code.
Es gibt einige Fragen, die ich Ihnen stellen möchte:
- Warum zwei Schleifen erstellen, wenn Sie eine einzelne Zeile abrufen müssen?
- Warum die Datenbank zweimal abfragen, wenn Sie die Antwort bereits kennen?
- Escapen Sie
$username
und$password
für schlechte Zeichen mitmysql_real_escape_string
Methode?
Hier ist ein Beispiel, wie dieser Code aussehen sollte:
$query1 = "SELECT user_type,user_staus FROM `user_info` WHERE name='{$username}' AND password='{$password}' LIMIT 1";
$fetched = mysql_query($query1);
//check if record exists otherwise you would receive another notice that can
//break redirect functionality
if (mysql_num_rows($fetched))
{
$record = mysql_fetch_assoc($fetched);
// make sure that value is integer
if ((int)$record["user_staus"])
{
exit("Please login after some time");
}
else
{
$url = (bool)$record["user_type"] ? 'admin_form.php' : 'user_form.php';
header("Location: {$url}");
exit(0);
}
}
else
{
echo "please register to login";
}
AKTUALISIEREN
Wie von nikc.org
vorgeschlagen , if
der 3. Ebene entfernt verschachtelt und durch ternären Vergleich ersetzt