PHP と MySQL でセットアップされた Web サイト用のユーザー ログイン システムがあります。私の質問は、「許可」システムを作成するために、現在持っているものを変更できるかどうかでした。つまり、ユーザーには特定のコントロールのみを表示し、管理者には別のコントロールを表示します。私のmysqlテーブルには、列、、、'id'
および「a」、「b」を含むENUM「権限」があります。「a」はデフォルトです (管理者ではありません)。以下に、私が試したことを示します。'username'
'password'
このファイルは " checklogin.php
" (スペースを節約するために、すべてのコードは追加しません)
//First I include variables to connect to the database & connect
//Then I define username and password as $_POST from a form on an earlier page
$user=a;
$admin=b;
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword' and permissions='$user'";
$sqladmin="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword' and permissions='$admin'";
$result=mysql_query($sql);
$resultadmin=mysql_query($sqladmin);
$count=mysql_num_rows($result);
$countadmin=mysql_num_rows($resultadmin);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
session_register("user");
header("location:login_success.php");
}
else {
if($countadmin==1){
session_register("myusername");
session_register("mypassword");
session_register("admin");
header("location:login_success.php");
}
else {
if($count==0) {
if($countadmin==0) {
echo "Wrong Username or Password";
}
}
}
}
したがって、このファイルでは、ユーザー入力と一致するテーブルの行数と、それが管理者であるかどうかを確認しています。存在する場合は、ユーザー名、パスワード、およびアクセス許可を使用してセッションを登録します。
次に、ファイル " login_success.php
"があります
<?php
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
else {
}
?>
<html>
<body>
Login Successful
<?php
if(session_is_registered(admin)){
echo "Welcome Admin!";
}
else {
echo "Not admin...";
}
?>
上記のコードは、セッションが登録されているかどうかを確認し、登録されていない場合はログイン フォームに戻ります。その下には、ユーザーが管理者かどうかを確認するコードのセクションがあります。これのログイン部分は機能しますが、権限を解決できません。
最後に、私の質問は、なぜこれが機能しないのですか? 論理的に正しいようです。長い投稿で申し訳ありません。助けてくれてありがとう。