如何在不使用codeigniter session flashdata

时间:2015-07-03 09:16:26

标签: codeigniter

在我的项目中,我正在尝试为我的会话创建一条错误消息。我试图使它成为如果会话重定向到主页然后将回显登录控制器上的消息。

  

注意:我尽量不使用会话flashdata。的 我   已经知道如何使用flashdata

当我登录仪表板时,它会在URL中显示令牌

示例 http://localhost/project-session/index.php/dashboard/32118fa09a0ef2df16851d1f35e3f7d5

在我的仪表板__construct()上,我有以下代码。

if ($this->session->userdata('user_id') == FALSE) {
    redirect('/');
}

如果token为false,上面的代码会将会话重定向到home。

如果由于会话过期而被重定向,那么应该激活下面的消息,登录控制器

$get_url_token = $this->uri->segment(2);
$get_session_token = $this->session->userdata('token');

if ((isset($get_session_token) && !isset($get_url_token)) || ((isset($get_url_token) && (isset($get_session_token) && ($get_url_token != $get_session_token))))) {
    echo "Session Token Invalid";
}

登录控制器

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->library('form_validation');
        $this->load->library('encryption');
        $key = bin2hex($this->encryption->create_key(16));

        $get_url_token = $this->uri->segment(2);
        $get_session_token = $this->session->userdata('token');

        if ((isset($get_session_token) && !isset($get_url_token)) || ((isset($get_url_token) && (isset($get_session_token) && ($get_url_token != $get_session_token))))) {
            echo "Session Token Invalid";
        }

        $this->form_validation->set_rules('username', 'Username');
        $this->form_validation->set_rules('password', 'Password');

        if ($this->form_validation->run() == FALSE) {

            $this->load->view('welcome_message');

        } else {
            $data = array(
                'token' => $key
            );

            $this->session->set_userdata($data);

            redirect('dashboard' .'/'. $key);
        }
    }
}

问题:如果没有使用codeigniter会话flashdata,当我的登录控制器重定向到登录时,如何在会话过期时回显我的消息。当我重定向时,回显消息不会被激活。

更新了登录控制器

  

我有消息正在工作但是当我去重新加载页面时它不会清除消息。任何建议。

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

    private $error = array();

    public function index() {

        $this->load->library('form_validation');
        $this->load->library('encryption');
        $key = bin2hex($this->encryption->create_key(16));

        $this->form_validation->set_rules('username', 'Username');
        $this->form_validation->set_rules('password', 'Password');

        if ($this->form_validation->run() == TRUE) {

            $this->session->set_userdata(array('token' => $key));

            redirect('dashboard' .'/'. $key);
        }

        $get_url_token = $this->uri->segment(2);
        $get_session_token = $this->session->userdata('token');

        if ((isset($get_session_token) && !isset($get_url_token)) || ((isset($get_url_token) && (isset($get_session_token) && ($get_url_token != $get_session_token))))) {
            $this->error['warning'] = 'Session Token';
        }

        if (isset($this->error['warning'])) {
            $data['error_warning'] = $this->error['warning'];
        } else {
            $data['error_warning'] = '';
        }

        $this->load->view('welcome_message', $data);
    }
}

0 个答案:

没有答案