简体   繁体   中英

Update session in codeigniter

So I have to profile in my view but, it won't change until I logout. Could anyone help me with this problem?.

Below is the my Login controller

    public function login(){
    $user = $this->input->post('username',true);
    $pass = $this->input->post('password',true);
    $cek= $this->M_Login->prosesLogin($user, $pass);
    $hasil = count ($cek);
    if($hasil >0){
        $select =$this->db->get_where('usersystem',array('username'=>$user,'password'=>$pass))->row();
    //  $data = array('logged_in'=>true, 'loger'=>$select->username);*/
        $this->session->set_userdata(array('username'=>$user,'idperson'=>$select->idperson,
            'foto'=>$select->foto));

        if($select->kdlevel=='klAd'){
            redirect('C_Login/pageAdmin');
        }elseif ($select->kdlevel=='klOr') {
            redirect('C_Login/pageOrangtua');
        }elseif ($select->kdlevel=='klG') {
            redirect ('C_Guru/sikap');
        }

    }else{
        $this->session->set_flashdata('err','username atau password salah');
        redirect('C_Login/index');
    }
}

Here my upload profile picture controller's method

    public function do_upload()
    {
            $this->load->library('upload');
            $this->upload->initialize($config);
            if ( ! $this->upload->do_upload('userfile'))
            {
                    $error = array('error' => $this->upload->display_errors());

                    $this->load->view('uploadfoto', $error);
            }
            else
            {       
                    $person=$this->session->userdata('idperson');
                    $img=$this->upload->data();
                    $foto=$img['file_name'];
                    $data=array('foto'=>$foto);
                    $edit=$this->M_Upload->editData('usersystem', $data, $person);
                   // print_r($person);
                    if ($edit>0) {
                            $_SESSION['foto']=$edit;
                            redirect('upload/index');
                    }else{
                            echo "gagal";
                    }
            }
    }

Here is the my view to show the profile picture

<div class="profile-userpic">
   <img class="nav-user-photo" src="<?php echo base_url('uploads/'.$this->session->userdata('foto')); ?>" />
</div>

Try to update foto session variable.

Your code

 if ($edit>0) {
       $_SESSION['foto']=$edit;
      redirect('upload/index');
   }else{
       echo "gagal";
   }

Updated code

  // Returns array of containing all of the data related to the file you uploaded.
    $upload_data = $this->upload->data(); 
    $file_name = $upload_data['foto'];

// modify session
$this->session->set_userdata('foto', $file_name );

Hope this will help you :

Your have to first unset foto session then set it again in your if condition

Your else condition should be like this :

$person = $this->session->userdata('idperson');
$img = $this->upload->data();
$foto = $img['file_name'];
$data = array('foto'=>$foto);
$edit = $this->M_Upload->editData('usersystem', $data, $person);
if ($edit > 0) 
{
    $this->session->unset_userdata('foto');
    $this->session->set_userdata('foto', $foto);
    redirect('upload/index');
}
else
{
   echo "gagal";
}

For more : https://www.codeigniter.com/user_guide/libraries/sessions.html#removing-session-data

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM