请带有角色的PHP会话的说明

时间:2015-04-04 22:07:08

标签: php mysql session login roles

我有一个MySQL数据库。在该数据库中,我有一个名为users的表。在用户中,我有usernamepasswordrole。如果角色为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');
}

3 个答案:

答案 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" );
}