Session dalam CodeIgniter Versi 2

Session di CodeIgniter

Class session mengizinkanmu untuk mengelola status dari user dan mentrack aktivitas mereka ketika mereka sedang browsing pada websitemu.

Class session ini menyimpan informasi session setiap user sebagai data serialisasi (biasanya dienkripsi) dalam cookie.

Class session juga bisa menyimpan data session dalam database dimana penggunaan dalam database ini bertujuan untuk mencocokkan session ID dalam cookie  user dengan session ID yang disimpan dalam tabel.

Mengeset  Konfigurasi encryption

Kamu harus mengisi nilai dari konfigurasi pada file application/config.php seperti dibawah ini:

$config[‘encryption_key’]=’nilai_enkripsi’;

Keterangan:

‘nilai_enkripsi’ bisa kamu ganti dengan karakter apapun.

Catatan:

Jika kamu kosongkan maka akan menghasilkan error seperti gambar dibawah ini:

Inisialisasi Session

Session akan berjalan secara global setiap kali page diload.

Untuk menginisialisai session maka kamu dapat menggunakan 2 cara, yaitu:

  • Memanggilnya melalui controller  dengan syntax $this->load->library(‘session’)
  • Memanggilnya melalui file autoload.php

Data Session

Session adalah array yang berisi informasi berikut ini:

  • ID session unik untuk user, id ini adalah string random yang dihash dengan MD5 dan selalu digenerate ulang setiap 5 menit.
  • Alamat IP user
  • User Agent Data
  • Timestamp untuk aktivitas terakhir

Bentuknya seperti dibawah ini:

[array]

(

‘session_id’=> random hash,

‘ip_address’=> ‘string – user IP address’,

‘user_agent’=> ‘string – user agent data’,

‘last_activity’ => timestamp

)

Membuat Data Session Custom

Untuk menambahkan data ke dalam sessionmu maka kamu bisa gunakan syntax:

$this->session->set_userdata($array);

Contoh:

$dataku=array(‘nama_user’=>’fahmi’, ’email’=>‘fahmibasya@gmail.com‘,

);

$this->session->set_userdata($dataku);

Catatan:

Data yang dimasukkan ke dalam session harus berbentuk array.


Mengambil Data Session

Untuk mengambil informasi dari session maka kamu bisa gunakan:

$this->session->userdata(‘informasi_yang_ingin_kamu_ambil’)

Contoh:

$this->session->userdata(‘nama_user’);

Catatan:

Sebelum kamu mengambil data session maka kamu sebelumnya harus membuat data session terlebih dahulu.

Menghapus Data Session

Untuk menghapus informasi tertentu dari session maka kamu bisa gunakan syntax:

$this->session->unset_userdata(‘informasi_yang_ingin_kamu_hapus’)

Contoh:

Saya ingin menghapus informasi nama_user dari session user ketika dia sudah LOGOUT

$this->session->unset_userdata(‘nama_user’);

Jika kamu ingin menghapus semua data dalam session maka kamu bisa gunakan

$this->session->sess_destroy():

Memberikan Status Sesi

Untuk memberikan pesan status  maka kamu bisa gunakan syntax:

$this->session->set_flashdata(‘variabel’,‘nilai’)

Untuk membacanya maka kamu gunakan syntax:

$this->session->flashdata(‘variabel’)

Contoh Kasus:

Saya mempunyai sebuah form login seperti gambar dibawah ini:


Diketahui:

  • Satu controller bernama login
  • Satu fungsi bernama index()
  • Satu mode bernama user
  • Satu View benama login_view

Untuk menampilkan form diatas maka saya harus memanggil URL http://localhost/codeigniter/login, dimana kodenya seperti dibawah ini:

<?php 

class Login extends Controller {

function Login()
{

parent::Controller();

}

function index()
{

$this->load->view(‘login_view’);

}

}

?>

Kode view dari file login_view.php adalah:

<?php 

echo $this->session->userdata(‘session_username’);

echo $this->session->flashdata(‘pesan’);

echo form_open(“login/proses_login”);

echo “Username : “ form_input(“username”) ;
echo “Password : ” form_password(“password”);
echo form_submit(’simpan’,‘Simpan’);
echo form_close();
?>

Terlihat pada kode form login diatas bahwa setelah user mengisi form maka form ini akan memberikan datanya ke controller login dengan fungsi proses_login, maka kita harus membuat controller login serta fungsi proses_login seperti dibawah ini:
<?php 

class Login extends Controller {

function Login()
{

parent::Controller();

}

function proses_login()
{

$username=$this->input->post(‘username’);

$password=$this->input->post(‘password’);

$data[‘user’]=$this->nama_modelmu->fungsi_modelmu($username, $password);
if (empty($data[‘user’])){
$this->session->set_flashdata(‘pesan’, ‘Username dan Password Anda Salah, Silahkan ulangi kembali’);
redirect(‘login/index’);
}
else
{
$sesi[‘session_username’]=$username;
$this->session->set_userdata($sesi);

redirect(‘dashboard/index’);

 

}

}

function logout()

 

{

$this->session->sess_destroy();

redirect(‘login/index’);

}

}

}

?>

Keterangan:

  • Fungsi index() pada Controller login digunakan untuk menampilkan form Login.

$this->session->set_flashdata(‘pesan’, ‘Username dan Password Anda Salah, Silahkan ulangi kembali’);

  • Pada kode ini kita mengeset nilai dari pesan yang akan ditampilkan pada view login jika user salah memasukkan username dan password, dimana pada view login kita panggil dengan variabelnya dengan kode berikut ini:
echo $this->session->flashdata(‘pesan’);
  • $sesi[‘session_username’]=$username; kode ini memberikan nilai dari variabel $username ke dalam array $sesi.
  • $this->session->set_userdata($sesi); pada kode ini kita mengeset nilai dari session dengan data dari array $sesi.
  • echo $this->session->userdata(‘session_username’); Pada kode ini kita akan menampilkan nama user pada View login.
  • redirect(‘dashboard/index’); pada kode ini jika user memasukkan username dan password yang benar maka munculkan halaman admin.
  • $this->session->sess_destroy(); kode ini digunakan untuk menghapus data session.

You may also like...

1 Response

  1. Steflo says:

    mas tolong kasih contoh untuk user authentikasi dong misalnya ada 3 user dibagi menjadi superadmin,admin,dan user.
    kalau superadmin nanti ke halaman “A”,
    kalau admin nanti kehalaman “B”,
    kalau user nanti kehalaman “C” . Makasih mas 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *