Php 检查会话用户是管理员还是简单用户

Php 检查会话用户是管理员还是简单用户,php,html,css,cakephp,Php,Html,Css,Cakephp,我想为按钮设置if子句。如果管理员登录,它将显示,否则不会显示 if($this->Session->User['role'] == 'admin') { echo '<li> <a href="/VAG/dashboard"><ul class="pull-right">Admin skiltis</ul></a></li>'; } if($this->Session->User['role'

我想为按钮设置if子句。如果管理员登录,它将显示,否则不会显示

if($this->Session->User['role'] == 'admin') {
    echo
    '<li> <a href="/VAG/dashboard"><ul class="pull-right">Admin skiltis</ul></a></li>';
}
if($this->Session->User['role']=='admin'){
回声
“
  • ”; }

    我无法从会话中获取该角色并比较它是否是管理员。

    请尝试对代码进行一点调试

    首先检查会话是否已启动。 如果结果为“PHP\u session\u NONE”,您可以通过执行命令“session\u status()”来完成此操作,因为您的会话尚未启动。您可以通过在页面进行任何打印之前放置一个“session\u start()”来修复它。

    If
    print\r($\u session)的值类似于

    Array ( [Config] => Array ( [userAgent] => 4df452d8263aa05ef9324f37499322b0 [time] => 1401090120 [countdown] => 10 ) [Message] => Array ( ) [Auth] => Array ( [User] => Array ( [id] => 8 [username] => aaaaa [email] => aaa@gmail.com [role] => admin [created] => 2014-05-26 02:43:20 [modified] => 2014-05-26 02:43:20 [status] => 1 ) ) )
    
    试试这个代码,我想它会有用的

    if($_SESSION['Auth']['User']['role'] == 'admin') {
    echo
    '<li> <a href="/VAG/dashboard"><ul class="pull-right">Admin skiltis</ul></a></li>';
    }
    
    if($\u会话['Auth']['User']['role']=='admin'){
    回声
    “
  • ”; }
    直接使用
    $\u会话['Auth']['User']
    是一种不好的做法,因为根据
    AuthComponent
    的配置方式,它可能不可用

    您最好将经过身份验证的用户从控制器传递到视图,然后只检查其属性:

    AppController:

    $authenticated_user = $this->Auth->user();
    
    if(isset($authenticated_user))
    {
        $this->set(compact('authenticated_user'));
    }
    
    观点:

    if(isset($authenticated_user) && $authenticated_user['role'] == 'admin'){
        ...
    }
    

    顺便说一句,您还应该在视图中使用
    HtmlHelper
    生成链接,而不是使用硬编码URL手动打印
    标记,以从许多蛋糕功能中获益。

    您是否启动了会话,请检查它。我尝试打印会话,看起来它已启动。如果是,请查看您是否满足
    用户['role']
    或者不在
    if($this->Session->User['role']=='admin'){
    这一行之前。你能给我们看一下
    打印($\u Session)
    ?数组([Config]=>Array([userAgent]=>4df452d8263aa05ef9324f3749322b0[时间]=>1401090120[倒计时]=>10)[消息]=>Array()[Auth]=>Array([User]=>8[username]=>aaaaaaaaaaa]=>[电子邮件]=>aaa@gmail.com[role]=>admin[created]=>2014-05-26 02:43:20[modified]=>2014-05-26 02:43:20[status]=>1])出现错误:注意(8):会话已启动-忽略会话启动()好的,会话已启动。您可以撤消此更改。打印条件的结果打印($this->session->User['role'))和print_r($this->Session)print_r($this->Session->User['role'])-无响应,print_r($this->Session)-数千响应:用于print_r($this->Session)??