2013-02-22 48 views
0

我有一个用户管理系统,用户类型是“管理员”和“用户”。如果登录的用户是管理员,他可以访问几页。如果角色是用户,他只能访问一个页面。我需要保存管理员/用户的会话并每次检查他是否为“admin”,以便用户不通过传递URL来非法访问信息。现在我可以保存用户的名字,但不能保存他的角色。我该怎么做才能将ROLE传递给下一组页面。保存会话传递给其他页面

Home.php

session_start(); 
    if($_SESSION["logging"] && $_SESSION["logged"]) 
    { 
    echo $_SESSION[user]; 
    //Can be accessed only by admin 
    dashboard(); 
    } 
    if(!$_SESSION["logging"]) 
    { 
    $number_of_rows=checkpass(); 
    if($number_of_rows==1) 
     { 
     $_SESSION[user]=$_GET[userlogin]; 
     $_SESSION[logged]=true; 
     print"<h1>you have loged in successfully</h1>"; 
     if($res['ROLE']=='user') 
     { 
         //Accessible only by user. 
     print "<h3><a href='user.php'>View Users</a></h3>"; 
       logout(); 
     } 
     } 
     else 
     { 
      print "Please enter your log in information!"; 
      loginform(); 
     } 
    } 
    function checkpass() 
    { 
    //Database query 
    if($res['ROLE']=='admin') 
    { 
     //Redirected 
     dashboard(); 
    } 
+1

你也可以保存角色在会话中,这样的事情: '$ _SESSION [“用户”] [“角色”] = $的作用;' 你可以检查它是这样的:'如果($ _SESSION ['user'] ['role']!='admin')exit;' – Perry 2013-02-22 10:36:22

回答

1

添加这是有史以来需要

$_SESSION['role']= role of the user; 

在其他页面中获取$ _SESSION ['role']。

1

使用本

if($res['ROLE']=='user') 
{ 
    $_SESSION['ROLE'] = "user"; 
        //Accessible only by user. 
    print "<h3><a href='user.php'>View Users</a></h3>"; 
    logout(); 
} 

if($res['ROLE']=='admin') 
{ 
    $_SESSION['ROLE'] = "admin"; 
    //Redirected 
    dashboard(); 
} 

为获得在其他页面ROLE使用

echo $_SESSION['ROLE']; 
+0

@Sindu在next.php上面写'session_start();'之后'echo $ _SESSION ['ROLE'];'' 。它会工作。 – 2013-02-22 10:55:34

+0

我如何检查用户是否在下一页有效? – Sindu 2013-02-22 10:55:43

+1

是的,它:) :) – Sindu 2013-02-22 10:56:07