Php 如何在CodeIgniter中使用会话创建权限

Php 如何在CodeIgniter中使用会话创建权限,php,codeigniter,Php,Codeigniter,我在创建权限菜单时遇到问题 好的,我有一个桌子使用者 用户名、密码、权限 我在这样的模型中有一个函数 function valid_login($username, $password) { $query = $this ->db ->where('username', $username) ->where('password', md5($password))

我在创建权限菜单时遇到问题

好的,我有一个桌子使用者

用户名、密码、权限

我在这样的模型中有一个函数

function valid_login($username, $password)
        {
        $query = $this
            ->db
            ->where('username', $username) 
            ->where('password', md5($password)) 
            ->limit(1) 
            ->get('user'); /

        if ($query->num_rows() == 1) {
                return $query->row_array(); 
        }
        else
                {
                        return FALSE; 
                }
        }
public function index()
        {
              if ( isset($_SESSION['permission']) ) { 
                 redirect('home_controller/home'); 
              }

              $this->load->library('form_validation'); 
              $this->form_validation->set_rules('username', 'Username', 'required'); 
              $this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
              if ( $this->form_validation->run() == TRUE ) { 
                 $this->load->model('m_user'); 
                 $result = $this->m_user->valid_login(
                             $this->input->post('username'),  
                             $this->input->post('password')
                          );

                        if ($result == TRUE) { 
                        $_SESSION['permission'] = ????;
                            redirect('home_controller/home'); 
                        }
              } 

                $this->load->view('login_form'); 
        }
<?php
if($_SESSION['permission']=="Administrator"){
    $this->load->view('administrator_menu');;
}else{
    $this->load->view('user_menu');;
}
?>
来自控制器的值post,脚本如下

function valid_login($username, $password)
        {
        $query = $this
            ->db
            ->where('username', $username) 
            ->where('password', md5($password)) 
            ->limit(1) 
            ->get('user'); /

        if ($query->num_rows() == 1) {
                return $query->row_array(); 
        }
        else
                {
                        return FALSE; 
                }
        }
public function index()
        {
              if ( isset($_SESSION['permission']) ) { 
                 redirect('home_controller/home'); 
              }

              $this->load->library('form_validation'); 
              $this->form_validation->set_rules('username', 'Username', 'required'); 
              $this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
              if ( $this->form_validation->run() == TRUE ) { 
                 $this->load->model('m_user'); 
                 $result = $this->m_user->valid_login(
                             $this->input->post('username'),  
                             $this->input->post('password')
                          );

                        if ($result == TRUE) { 
                        $_SESSION['permission'] = ????;
                            redirect('home_controller/home'); 
                        }
              } 

                $this->load->view('login_form'); 
        }
<?php
if($_SESSION['permission']=="Administrator"){
    $this->load->view('administrator_menu');;
}else{
    $this->load->view('user_menu');;
}
?>
我不明白,如何从模型中获取字段权限值。我需要该值来创建$\u会话

我的观点是这样的

function valid_login($username, $password)
        {
        $query = $this
            ->db
            ->where('username', $username) 
            ->where('password', md5($password)) 
            ->limit(1) 
            ->get('user'); /

        if ($query->num_rows() == 1) {
                return $query->row_array(); 
        }
        else
                {
                        return FALSE; 
                }
        }
public function index()
        {
              if ( isset($_SESSION['permission']) ) { 
                 redirect('home_controller/home'); 
              }

              $this->load->library('form_validation'); 
              $this->form_validation->set_rules('username', 'Username', 'required'); 
              $this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
              if ( $this->form_validation->run() == TRUE ) { 
                 $this->load->model('m_user'); 
                 $result = $this->m_user->valid_login(
                             $this->input->post('username'),  
                             $this->input->post('password')
                          );

                        if ($result == TRUE) { 
                        $_SESSION['permission'] = ????;
                            redirect('home_controller/home'); 
                        }
              } 

                $this->load->view('login_form'); 
        }
<?php
if($_SESSION['permission']=="Administrator"){
    $this->load->view('administrator_menu');;
}else{
    $this->load->view('user_menu');;
}
?>

谢谢你的关注。。
任何人都可以帮助我..

像这样在
CI
中设置会话:

if ($result == TRUE) { 
    print_r( $result );die;
    //$this->sesson->set_userdata('logged_user', $result); #this to set the session with the returned result
    $_SESSION['permission'] = $result['permission'];  #set permission from the result in the session
    redirect('home_controller/home'); 
}
现在要阅读会话(如果存在或不存在),请执行以下操作:

if( $this->session->userdata('logged_user') ){
    echo "The user id stored in session is :".$id = $this->session->userdata['logged_user']['id'];
}else{
    redirect('someplace', 'refresh');
}
$config['encryption_key'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
编辑:
要启动会话,请首先在application/autoload.php中自动加载会话:

$autoload['libraries'] = array('session');
其次,在
application/config.php
中设置一个随机的
加密密钥,如下所示:

if( $this->session->userdata('logged_user') ){
    echo "The user id stored in session is :".$id = $this->session->userdata['logged_user']['id'];
}else{
    redirect('someplace', 'refresh');
}
$config['encryption_key'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

您是否使用
session_start()启动会话在ci上?CI有自己的会话库。还没有,因为我无法获取字段权限值。如果我得到这个值,可能会有问题。你可以使用CI会话,比如@NiloySaha answer。或者您应该写入
CI root/index.php
this:
session_start()为什么不在组中使用Tank Auth?更容易使用。我建议调整:)
如果($result=$this->m_user->valid_login($this->input->post('username'),$this->input->post('password')){$\u SESSION['permission']=$result['permission']}
对不起,我还是不懂你的脚本。我只想获取权限字段,因为我想创建多级用户。
permission
是表
user
中的
属性吗@okywijayaI认为query$query=$this->db->where('username',$username)->where('password',md5($password))->limit(1)->get('user')中的错误;我尚未声明字段权限..将结果打印一次以查看返回的内容。如果($query->num_rows()==1){return$query->row_array();$_SESSION['permission']=$result['permission'];我得到如下错误..遇到PHP错误严重性:注意消息:未定义索引:权限文件名:views/home.PHP