Er zijn veel problemen met uw code, de belangrijkste reden dat u een foutmelding krijgt, is omdat $usertype
en $userstatus
zijn niet vooraf gedefinieerd en niet gevalideerd.
Maar naar mijn mening is het geen hoofdprobleem met uw code.
Er zijn enkele vragen die ik u zou willen stellen:
- Waarom twee lussen maken als je een enkele rij moet ophalen?
- Waarom de database twee keer opvragen als je het antwoord al weet?
- Ben je ontsnapt aan
$username
en$password
voor slechte tekens met behulp vanmysql_real_escape_string
methode?
hier is een voorbeeld hoe deze code eruit zou moeten zien:
$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";
}
UPDATE
Zoals voorgesteld door nikc.org
, verwijderd 3e niveau if
nesten en vervangen door ternaire vergelijking