Postingan lainnya
Mereload session dengan data cookie di codeigniter
saya sudah tempatkan kode seperti ini di masing2 halaman yang membutuhkan data session. tetapi kenapa ini tidak bekerja (session menjadi kosong dan dilempar ke halaman login lagi, padahal var_dump cookie masih ada ) setelah beberapa waktu sejak sesion login dimulai. kira2 apa yang salah dari function saya ini. dan dimana seharusnya saya memanggil function ini?
function startSession($name)
{
return (!empty($_SESSION[$name])) ? true : false;
}
function startCookie($name)
{
return (!empty($_COOKIE[$name])) ? true : false;
}
function reload_session()
{
if( empty(startSession('id')) && empty(startSession('role')) && empty(startSession('user')) )
{
$CI = get_instance();
if ( !empty(startCookie('c_user')) ) {
$token = getCookie('c_user');
$now = date('Y-m-d H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$agent = $_SERVER['HTTP_USER_AGENT'];
// query untuk mengambil input email yang memiliki kecocokan dengan token cookie yang ada di database
$check = $CI->Auth_model->checkCookie($token,$now);
if ( $check ) {
if( $check['ip'] == $ip || $check['useragent'] == $agent) {
$key = $check['email'];
// query lanjutan jika token dan email cocok // mengambil data user untuk dijadikan session
$getData = $CI->Auth_model->getDataUser($key);
if ( $getData ) {
$data = [
'id' => $getData['id'],
'role' => $getData['role'],
'user' => $getData['username']
];
$CI->session->set_userdata($data);
}
}
}
}
return TRUE;
}
}
2 Jawaban:
Pelajar cara menggunakan <a href=' https://www.codeigniter.com/user_guide/libraries/sessions.html '> https://www.codeigniter.com/user_guide/libraries/sessions.html </a> , mulai dari load awal, cara setting session dan cara mendapatkannya
Begitu juga dengan <a href=' https://www.codeigniter.com/userguide3/helpers/cookie_helper.html '>cookie di codeigniter</a>
Tanggapan
udah solved bang, makasi... ternyata yang salah ada di function helpernya yang querynya ngga bisa masuk ke model walau udah di get_instance ($CI)
silahkan dishare jawabannya dibawah dan ditandais ebagai jawaban benar, jadi kalo ada yang punya masalah sama, bisa refrensi ke sini
jawaban yang benar yang ini?
Jawaban Terpilih
<pre> // $check = $CI->Auth_model->checkCookie($token,$now); $check = $CI->db->get_where('log_activity',['token' => $token, 'expired >' => $now])->row_array();
// $getData = $CI->Auth_model->getDataUser($key); $getData = $CI->db->get_where('user', ['u_email' => $key])->row_array(); </pre>
karena ini adalah file helper CI tambahan yang dibikin sendiri (bukan controller) harus ada fungsi get_instance() yang disimpan di variable $CI untuk bisa memanggil keyword $this. tp setelah dicoba, $this diganti dengan $CI, query menuju model ngga dikenali. jadi variable $check yg dikomentari itu isinya null. akhirnya dicoba tanpa masuk model dengan menulis query ke databasenya langsung, mungkin ada solusi yang lebih baik lagi, tp untuk sementara, kode ini sudah berhasil berjalan sesuai harapan.