Det finns många problem med din kod, huvudorsaken till att du får ett felmeddelande är att $usertype
och $userstatus
är inte fördefinierade och inte validerade.
Men enligt min åsikt är det inte ett huvudproblem med din kod.
Det finns några frågor som jag skulle vilja ställa till dig:
- Varför skapa två loopar om du behöver hämta en enda rad?
- Varför frågar databasen två gånger om du redan vet svaret?
- Krymmer du
$username
och$password
för dåliga tecken medmysql_real_escape_string
metod?
här är ett exempel på hur den här koden ska se ut:
$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";
}
UPPDATERA
Som föreslagits av nikc.org
, tog bort tredje nivån if
kapsling och ersätts med ternär jämförelse