Há muitos problemas com seu código, o principal motivo pelo qual você recebe um erro é porque
$usertype
e $userstatus
não são predefinidos e não validados.Mas na minha opinião não é um problema principal com o seu código.
Há algumas perguntas que eu gostaria de fazer a você:
- Por que criar dois loops se você precisa buscar uma única linha?
- Por que consultar o banco de dados duas vezes se você já sabe a resposta?
- Você está escapando de
$username
e$password
para caracteres ruins usandomysql_real_escape_string
método?
aqui está um exemplo de como esse código deve ficar:
$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";
}
ATUALIZAÇÃO
Conforme sugerido por nikc.org , removido de 3º nível
if
aninhamento e substituído por comparação ternária