【问题标题】:Access information from session in website with two different sessions使用两个不同的会话从网站中的会话访问信息
【发布时间】:2016-02-22 21:56:40
【问题描述】:

我的网站有两个限制区域,在公共网站和管理区域。我尝试按照一些说明在整个网站上进行多个会话,但在访问和检索他们的信息方面遇到了一些问题。

下面是两个页面中的login 方法。首先来自行政区:

public function login()
{
    if ($this->Admin_model->find_credentials()) {
        $data['user_email'] = $this->input->post('email');
        $this->session->set_userdata('auto', $data);

        redirect('/admin/dashboard', 'refresh');
    } else {
        $this->session->set_flashdata('message', 'Desculpe, credenciais inválidas');
        redirect('/admin/entrar');
    }
}

然后,公共网站的管理区域:

public function login()
{
    if ($this->Usuarios_model->find_credentials()) {
        $email = $this->input->post('email');

        if ($this->Usuarios_model->is_active($email)) {
            $data = array();
            $data['nome'] = $this->Usuarios_model->find_col_by_email('nome_razao_social', $email);
            $data['email'] = $email;
            $data['tipo_usuario'] = $this->Usuarios_model->find_col_by_email('tipo_usuario', $email);
            $data['id_usuario'] = $this->Usuarios_model->find_col_by_email('id', $email);

            $this->session->set_userdata('auto', $data);
            $this->session->set_flashdata('message', 'Bem-vindo!');

            redirect('/usuario/painel');
        } else {
            $this->session->set_flashdata('message', 'Por favor, ative o seu cadastro');
            redirect('/');
        }
    } else {
        $this->session->set_flashdata('message', 'Desculpe, credenciais inválidas');
        redirect('/');
    }
}

对于每个新会话,我都会为其命名。现在,每次调用会话值时,我都必须指定我想要的会话的名称,但是在我尝试登录后出现错误消息:

消息:数组到字符串的转换

这个错误指向我模型的第 161 行,代码如下:

public function find_details($email = null, $id = null, $id_carro = null)
{
    $this->db
        ->select(
            'usuario.*,' .
            'estado.nome_estado AS uf,' . 
            'cidade.nome_cidade AS cidade'
        )
        ->join('cidade', 'cidade.id = usuario.id_cidade')
        ->join('estado', 'estado.id = usuario.id_estado');

    if ($email) {$this->db->where('usuario.email', $email);} // 161
    ...
}

我需要做什么才能使多个会话正常工作?

【问题讨论】:

    标签: codeigniter session


    【解决方案1】:

    好的。对我来说,解决方案是用不同的方式来呼应某个会话的价值:

    $this->session->userdata('foo')['bar'].

    其中foo 是会话名称,在创建新会话时指定。就我而言,一个很好的例子可以是$this->session->userdata('auto')['email'];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多