Обновить сессию в codeigniter

Таким образом, я должен профиль в моем представлении, но это не изменится, пока я не выйду.
Может ли кто-нибудь помочь мне с этой проблемой?

Ниже мой контроллер входа в систему

    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');
}
}

Здесь мой метод загрузки профиля изображения профиля

    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";
}
}
}

Вот мой взгляд, чтобы показать фотографию профиля

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

2

Решение

Надеюсь, что это поможет вам :

Вы должны сначала сбросить foto сеанс затем установите его снова в вашем условии if

Ваш 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);
if ($edit > 0)
{
$this->session->unset_userdata('foto');
$this->session->set_userdata('foto', $foto);
redirect('upload/index');
}
else
{
echo "gagal";
}

Для большего : https://www.codeigniter.com/user_guide/libraries/sessions.html#removing-session-data

0

Другие решения

Попробуйте обновить переменную сессии foto.

Ваш код

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

Обновленный код

  // 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 );
0