Der er mange problemer med din kode, hovedårsagen til at du modtager en fejl er fordi $usertype
og $userstatus
er ikke foruddefinerede og ikke validerede.
Men efter min mening er det ikke et hovedproblem med din kode.
Der er få spørgsmål, som jeg gerne vil stille dig:
- Hvorfor oprette to sløjfer, hvis du skal hente en enkelt række?
- Hvorfor spørger databasen to gange, hvis du allerede kender svaret?
- Undslipper du
$username
og$password
for dårlige tegn ved hjælp afmysql_real_escape_string
metode?
her er et eksempel på, hvordan denne kode skal se ud:
$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";
}
OPDATERING
Som foreslået af nikc.org
, fjernet 3. niveau if
indlejring og erstattet med ternær sammenligning