どのユーザーがどのページにアクセスできるかを示すこの基本的なクエリがあります。
$query = mysql_query("SELECT UserName FROM tblUsers WHERE PageOne = 1") or die (mysql_error());
基本的に、これはPageOneにアクセスできるすべてのユーザーからのチェックです。
$ currentUser = $ _SESSION ['username'](ログインしているユーザーを正しく表示する)がこの人であるかどうかを比較しようとしています。
そして、すべてのユーザーを獲得した後、
この単純なループを作成して、アクセスできるかどうかを確認します。
while ($row = mysql_fetch_assoc($query))
{
if (in_array($currentUser,$row["UserName"]))
echo "you have access"; //for testing purposes
else
die("you're not authorized");
}
これは、すべきでない場合でも、常にelseステートメントに入ります。これをデバッグしようとすると、クエリには3人のユーザーがいるはずですが、$ row ["UserName"]は1人のユーザー(最初のユーザー)しか返しません。
ただし、if / elseステートメントを削除して、$ row ["UserName"]を出力すると、正しいユーザーが出力されます。
では、これをどのように回避しますか?
ありがとう!
編集
whileループで、echo $ row ["UserName"]を実行すると、User1User2User3(User3はCurrentUser)を取得します。
デバッグするには、
if ($currentUser == $row["UserName"])
echo "you have access";
else
echo $row["UserName"];
そして私は得る
User1User2あなたはアクセスできます