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

  }

avatar ngadiono
@ngadiono

27 Kontribusi 14 Poin

Diperbarui 5 tahun yang lalu

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>

avatar hilmanski
@hilmanski

2686 Kontribusi 2135 Poin

Dipost 5 tahun yang lalu

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-&gt;Auth_model-&gt;checkCookie($token,$now); $check = $CI-&gt;db-&gt;get_where('log_activity',['token' =&gt; $token, 'expired &gt;' =&gt; $now])-&gt;row_array();

// $getData = $CI-&gt;Auth_model-&gt;getDataUser($key); $getData = $CI-&gt;db-&gt;get_where('user', ['u_email' =&gt; $key])-&gt;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.

avatar ngadiono
@ngadiono

27 Kontribusi 14 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban