コードには多くの問題があります。エラーが発生する主な理由は、 $ username
が原因です。 および$userstatus
事前定義も検証もされていません。
しかし、私の意見では、これはコードの主な問題ではありません。
質問したいことがいくつかあります:
- 1つの行をフェッチする必要があるのに、なぜ2つのループを作成するのですか?
- 答えがわかっているのに、なぜデータベースに2回クエリを実行するのですか?
-
$ 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
を削除 ネストして3値比較に置き換え