#codeigniter #session
#codeigniter #сеанс
Вопрос:
Я устанавливаю сеанс при входе пользователя в пользовательскую модель
function cek(){
$username=$this->input->post('username');
$password=md5($this->input->post('password'));
$query=$this->db->query("select akun.*,profile.kelas, profile.jurusan FROM profile right JOIN akun ON profile.id_akun = akun.id_akun WHERE akun.username = '$username' AND akun.password = '$password'");
if ($query->num_rows() > 0)
foreach ($query->result() as $data) {
$data=array('LOGIN'=>TRUE,'LEVEL'=>$data->level,'KELAS'=>$data->kelas,'JURUSAN'=>$data->jurusan,'ID_AKUN'=>$data->id_akun,'USERNAME'=>$data->username);
$this->session->set_userdata($data);
echo json_encode(array("status" => TRUE));
} else {
echo json_encode(array("status" => FALSE));
}
}
Я хочу заменить только сеансы KELAS и JURUSAN
Контроллер профиля
public function tambahprofile()
{
if($this->session->userdata('LOGIN')=='TRUE' and $this->session->userdata('LEVEL')==1 )
{
$id_akun=$this->session->userdata('ID_AKUN');
$kelas='12';
$jurusan='multimedia';
$this->validasi();
$data = array(
'nis' =>$this->input->post('nis'),
'id_akun' =>$id_akun,
'nama' =>$this->input->post('nama'),
'telpon' =>$this->input->post('telpon'),
'alamat' =>$this->input->post('alamat'),
'tgllahir' =>$this->input->post('tgllahir'),
'tmptlahir' =>$this->input->post('tmptlahir'),
'jurusan' =>$this->input->post('jurusan'),
'kelas' =>$this->input->post('kelas'),
'jk' =>$this->input->post('jk'),
);
if ($this->input->post('id')=='') {
$this->profile_model->tambah($data);
/**
TODO:
- First todo item
- Second todo item
*/
echo json_encode(array("status" => TRUE));
}else{
$this->profile_model->update(array('id' => $this->input->post('id')),$data);
$this->profile_model->update($data);
echo json_encode(array("status" => TRUE));
}
}else {
redirect('beranda/loginPage');
}
}
Вид
<?php echo $this->session->userdata('KELAS').$this->session->userdata('JURUSAN');?>
Я создаю новую сессию, чтобы заменить старую сессию KELAS и jurusan
без ошибок, но, на мой взгляд, это старая сессия
Комментарии:
1. Где вы разместили этот код в контроллере?
2. профиль контроллера в функции addingprofile
Ответ №1:
Попробуйте это.
$data = array(
'kelas' => "test1",
'jurusan' => "Test2"
);
$this->session->set_userdata($data);
var_dump($this->session->userdata() );
$this->session->unset_userdata('kelas');
$data = array( 'kelas' => "newTest" );
$this->session->set_userdata($data);
var_dump($this->session->userdata() );
Использование $this->session->unset_userdata( 'kelas' );
отменит только эту запись.
$data = array( 'kelas' => "newTest" ); $this->session->set_userdata($data);
заменит только эту запись.
С другой стороны, $password=md5( $this->input->post( 'password' ) );
это не рекомендуется mate. Если вы читаете о том, что скорость, с которой md5() может быть нарушена, делает его плохим вариантом для хранения паролей.
PHP имеет встроенную функцию хеширования password_hash()
http://php.net/manual/en/function.password-hash.php
Стоило бы прочитать.
Ответ №2:
когда вам нужно заменить старые данные, просто сбросьте предыдущие данные, а затем снова установите новые данные
//remove old data
$perticular_data = array('KELAS'=>$kelas,'JURUSAN'=>$jurusan);
$this->session->unset_userdata($perticular_data);
//set new data
$perticular_data = array('KELAS'=>$new_kelas,'JURUSAN'=>$new_jurusan);
$this->session->set_userdata($perticular_data);
Комментарии:
1. $this->session-> unset_userdata($data); удалить весь сеанс? это мой полный сеанс $data=array(‘LOGIN’=>TRUE,’LEVEL’=>$data->level,’KELAS’=>$data->kelas,’JURUSAN’=>$data->jurusan,’ID_AKUN’=>$data->id_akun,’USERNAME’=> $data-> username); я просто хочу заменить jurusan и kelas