我有一个MySQL数据库。在该数据库中,我有一个名为users
的表。在用户中,我有username
,password
,role
。如果角色为0
,那么它就是用户。如果角色为1
,则为 admin 。
这就是会议现在设置的方式。
if($count==1){
echo "true";
$_SESSION['username'] = $user;
$_SESSION['password'] = $pass;
}
else {
echo "Wrong";
}
这就是我在页面顶部的内容:
session_start();
if(!isset($_SESSION['username'])){
header("location:login.php");
}
我对如何再次检查角色感到困惑。例如,如果它的角色是1 =如果角色0 - 用户则获得管理页面。
目前,我只有1名管理员,这就是我获得授权的方式。
但我不确定这是否正确。我需要解释。
if ( 'admin' == $_SESSION['username'] ) {
include('admin.php');
}
else {
include('user.php');
}
答案 0 :(得分:1)
这两个函数将检查会话是否存在并检查用户权限。
function confirmed_login(){
if(!isset($_SESSION['permission'])){
header('Location: login_redirect.php');
}
}
function permission_admin($permission){
if($permission != '1'){
header('Location: login_redirect.php');
}
}
function check_login($p) {
permission_admin($p);
confirmed_login();
}
只需在任何受限页面的顶部调用此函数,如下所示:
check_login($SESSION['role']);
答案 1 :(得分:0)
您应该在会话中设置角色,而不是检查用户名,而是检查角色:
...
echo "true";
$_SESSION['username'] = $user;
$_SESSION['password'] = $pass;
$_SESSION['role'] = $role;
...
if ($_SESSION['role'] == 1) {
include('admin.php');
} else {
include('user.php');
}
或作为替代方案设置管理变量,并在用户登录时始终检查是否存在:
...
echo "true";
$_SESSION['username'] = $user;
$_SESSION['password'] = $pass;
if($role == 1) {
$_SESSION['admin'] = true;
}
...
if (isset($_SESSION['admin'])) {
include('admin.php');
} else {
include('user.php');
}
答案 2 :(得分:0)
你在login.php中有数据库连接,对吗?如果用户名和密码当然存在于数据库中,为什么不使用连接并获取用户的角色信息,然后根据该角色值重定向用户(我与程序建立连接并调用该过程和loading informations并且在if中你是否必须控制用户是否存在; rowcount> 1例如:
$role = "";
$username = "";
$password = "";
$conn = oci_connect(---);
$stid = oci_parse($conn, "begin packageX.login(:username,:password,:role); end;");
oci_bind_by_name($stid, ":username", $username);
oci_bind_by_name($stid, ":password", $password);
oci_bind_by_name($stid, ":role", $role);
if ( $role == 1 and $username!="" and $password!="") {
header( "Location: admin.php" );
}
else if($role == 0 and $username!="" and $password!=""){
header( "Location: user.php" );
}