CodeIgniter Forums
Session destroing flashdata - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forum-5.html)
+--- Forum: General Help (https://forum.codeigniter.com/forum-24.html)
+--- Thread: Session destroing flashdata (/thread-63526.html)



Session destroing flashdata - Underzzoo - 11-09-2015

Hi guys, i'm brazilian, and sorry about my english.

Ok, let's go to the problem:

I'm trying to make a logoff button, and when a user click in logoff, i call the function logoff:

function logoff(){
        $this->session->sess_destroy();
        $this->session->unset_userdata(array('user_id', 'user_nome', 'user_admin', 'user_logado'));
        set_msg('logoff', 'Logoff efetuado com sucesso.', 'sucesso');
        redirect('usuarios/login');
    }

but, when i destroy the session, i can't create a new one to display the message that was set in 'set_msg' function.

I've two function in my helper to display it:

function set_msg($id = 'msgerro', $msg = NULL, $tipo = 'erro'){
    $CI =& get_instance();
    switch($tipo):
        case 'erro':
            $CI->cookies->set_flashdata($id, '<div class="alert-box alert radius">'.$msg.'</div>');
        break;
        
        case 'sucesso':
            $CI->session->set_flashdata($id, '<div class="alert-box sucess radius">'.$msg.'</div>');
        break;
    
        default:
            $CI->session->set_flashdata($id, '<div class="alert-box radius">'.$msg.'</div>');
        break;
    
    endswitch;        
}

//Verifica se existe uma mensagem para exibir na tela atual.
function get_msg($id, $print = TRUE){
    $CI =& get_instance();
    $flash = $CI->session->flashdata($id);  THAT VALUE WAS COMING NULL BECAUSE OF SESSION DESTROY.
    var_dump($flash);
    if(isset($flash)){
        if($print){
            echo $flash;
            return TRUE;
        }
        else{
            return $CI->session->flashdata($id);
        }
    }



Make sense?
Someone have a hint to give me, how to fix this problem?

My CI version is 3.0.3
in old versions, people type $this->session->create(); and it's work very well..

Heelp me!


RE: Session destroing flashdata - ivantcholakov - 11-09-2015

Code:
$this->session->sess_destroy();

For this case I would replace it with:

Code:
$this->session->sess_regenerate(TRUE); // TRUE here destroys the session data.

http://www.codeigniter.com/user_guide/libraries/sessions.html#CI_Session::sess_regenerate


RE: Session destroing flashdata - skunkbad - 11-09-2015

If all you are doing is showing a message that the user successfully logged out, then why not just redirect to a place where the message is displayed. For instance /login?logout=1. By doing that, the user can choose to log back in again, and you can use the logout query parameter to show the logout confirmation.


RE: Session destroing flashdata - CroNiX - 11-12-2015

nevermind