Есть много проблем с вашим кодом, основная причина, по которой вы получаете ошибку, заключается в том, что $usertype
и $userstatus
не определены заранее и не проверены.
Но, на мой взгляд, это не главная проблема с вашим кодом.
Я хотел бы задать вам несколько вопросов:
- Зачем создавать два цикла, если вам нужно выбрать одну строку?
- Зачем запрашивать базу данных дважды, если вы уже знаете ответ?
- Вы избегаете
$username
и $password
для плохих символов, используя метод mysql_real_escape_string
?
Вот пример того, как должен выглядеть этот код:
$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";
}
ОБНОВЛЕНИЕ
Как предложено nikc.org ,убран 3-й уровень if
, вложен и заменен троичным сравнением