Codeigniter

Tutorial CodeIgniter Dasar Part V – User Accounts Chapter 1

Sebenarnya ini adalah salah satu permintaan dari pembaca, yaitu membuat tutorial bagaimana membuat penanganan akun di dalam CI.. Kali ini kita menggunakan Codeigniter versi 2.x ke atas… (bukan untuk CI 1.7.x), lihat perbedaan CI 2.x dengan CI v1.7.x di sini

Sebelum kita mengenal lebih jauh, sebaiknya kita mengenal pemahaman dari segi konsep bagaimana akun dibuat.. Mulai dari konsep session, register, login, dan logout..

Baik, kita jelaskan satu persatu ya.. Dengan bahasa saya sendiri, mudah2an temen2 mengerti ya… hehe..

Session

Session adalah sebuah varibel yang diletakkan di server. Dengan begitu, PHP bisa mengambil nilai yang tersimpan di dalam variable tersebut meskipun kita membuka halaman baru di browser. Biasanya session akan hilang jika anda menutup browser atau dengan time out yang ditentukan. Session sangat diperlukan untuk penanganan login user/pengguna, yang mana nantinya beberapa data penting pengguna disimpan di dalam variable session, seperti status login, id user, nama user, dan nama group (group = kategori user). Oleh karena itu, ketika tab baru dibuka pun kita masih bisa mengakses data kita dengan asumsi kita sudah login ke dalam aplikasi tersebut.

Register

Register adalah bagaimana kita mendaftarkan user ke dalam database. Database mempunyai data user yang sewaktu2 dapat dipakai untuk login user. Proses dari register hanyalah penambahan data user ke dalam database dari form registrasi yang nanti kita buat.

Login

Login adalah proses di mana proses pengecekan user dilakukan. Pengecekan dilakukan untuk memeriksa apakah username dan password cocok atau tidak, jika ada dalam database dan cocok maka data akan dimasukkan ke dalam session, status login diset menjadi TRUE, dan data session lainnya akan diisikan dengan data user yang ada di dalam database.

Logout

Logout adalah sebaliknya dari Login. Logout adalah proses penghancuran data di variable session, yang berarti data2 di variable session dihapus. Jika data session dihapus, maka statusnya sekarang adalah tidak login, jadi bisa disebut ‘keluar dari sistem’.

 

OK, langsung saja kita berangkat ke CI… ;)

Buat Table

Sebelum ke pembuatan model, controller, dan view tentu saja yang harus dilakukan pertama kali adalah pembuatan database, dalam hal ini kita akan membuat sebuah table user yang berisi id_user, nama_lengkap, username, password, dan group… Saya kasih contoh sederhana seperti ini, yang mana sebetulnya masih bisa dikembangkan, misalnya penambahan status, verifikasi email, reset password, dan sebagainya… Tapi berhubung tidak memungkinkan dan terlalu rumit, maka saya buat contoh sederhana aja.. :)

Buat table user dengan mengcopy syntax SQL berikut ke PhpMyAdmin kamu beserta data sample:

CREATE TABLE  `user` (
`id_user` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nama_lengkap` VARCHAR( 100 ) NOT NULL ,
`username` VARCHAR( 50 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
`group` VARCHAR( 20 ) NOT NULL
) ENGINE = INNODB;
 
 
INSERT INTO  `user` (
`id_user` ,
`nama_lengkap` ,
`username` ,
`password` ,
`group`
)
VALUES
 (NULL , 'Cecep Yusuf', 'cheyuz', MD5('cheyuz') , 'admin'),
 (NULL , 'Ayu Dwi S', 'ayue', MD5('ayue') , 'operator');
Catatan: group adalah kategori dari user tersebut, misalnya: administrator, operator, member, dan sebagainya.

Buat Model Account

Sebelum kita membuat controller dan view untuk registrasi, login, dan logout, pertama2 kita harus membuat modelnya terlebih dahulu.. model apakah itu? Yup, model untuk account nya… kita buat account_model.php di direktori /application/models/

account_model.php

<?php
 
/**
 * @author cheyuz
 */
class Account_model extends CI_Model
{
    private $table = 'user'; //isi nama table user di sini
 
    function __construct()
    {
        parent::__construct();
    }
 
}

Di dalam class Account_model terdapat variable private $table, yang nantinya function2 di bawah akan mengakses variable itu, dari table mana data didapatkan.
Setelah class dibuat, maka harus dibuat fungsi2 dalam class tersebut. Fungsi2 yg perlu kita buat adalah function register, login, dan logout, juga ada fungsi2 tambahan lainnya.

Tambahkan function register di dalam class tersebut:

...
    function register($data)
    {
    }
...

di dalam function register terdapat parameter $data. Parameter ini adalah berupa array yang mana nantinya data dari form registrasi dimasukkan ke dalam database, maka di dalam function register() ditambahkan kode berikut ini:

...
    function register($data)
    {
        $this->db->insert($this->table, $data);
    }
...

Setelah function register dibuat, maka selanjutnya tambahkan function login di dalam class tersebut:

...
    function login($username, $password)
    {
    }
...

Di atas terlihat bahwa ada dua parameter, yaitu $username dan $password. Ini berguna buat nanti kita cek apakah usernamenya ada atau tidak, cocok atau tidak dengan passwordnya. Dan setelah itu isi function tersebut dengan kode di bawah ini:

...
    function login($username, $password)
    {
        $data = $this->db
                ->where(array('username' => $username, 'password' => md5($password)))
                ->get($this->table);
    }
...

$data adalah seleksi dari syntax SQL:

SELECT * FROM `user` WHERE `username`= $username AND `password` = md5($password)

Kemudian hasil tersebut dicek apakah ada dan cocok username dengan passwordnya atau tidak, ada berarti jika banyak baris lebih dari 0 (nol menyatakan bahwa tidak ada yang terseleksi).
Nah di bawah ini cara ngeceknya memakai if…

        ....
 
        if ($data->num_rows() > 0)
        {
            $user = $data->row();
 
            //data hasil seleksi dimasukkan ke dalam $session
            $session = array(
                'logged_in' => 1,
                'id_user' => $user->id_user,
                'group' => $user->group,
                'username' => $user->username
            );
 
            //data dari $session akhirnya dimasukkan ke dalam session (menggunakan library CI)
            $this->session->set_userdata($session);
            return true;
        }
        else
        {
            $this->session->set_flashdata('notification', 'Username dan Password tidak cocok');
            return false;
        }
 
        ....

berikut ini adalah function login() secara lengkap:

    ...
    function login($username, $password)
    {
        $data = $this->db
                ->where(array('username' => $username, 'password' => md5($password)))
                ->get($this->table);
 
        //dicek
        if ($data->num_rows() > 0)
        {
            $user = $data->row();
 
            //data hasil seleksi dimasukkan ke dalam $session
            $session = array(
                'logged_in' => 1,
                'id_user' => $user->id_user,
                'group' => $user->group,
                'username' => $user->username
            );
 
            //data dari $session akhirnya dimasukkan ke dalam session (menggunakan library CI)
            $this->session->set_userdata($session);
            return true;
        }
        else
        {
            $this->session->set_flashdata('notification', 'Username dan Password tidak cocok');
            return false;
        }
    }
    ...

Nah, kemudian setelah itu dibuat function logoutnya…
Ingat bahwa logout adalah menghapus session, maka scriptnya sederhana, cukup dengan function $this->session->sess_destroy();

    ...
    function logout()
    {
        $this->session->sess_destroy();
    }
    ...

Sehingga kode PHP lengkapnya untuk class Account_model adalah sebagai berikut:

<?php
 
/**
 * @author cheyuz
 */
class Account_model extends CI_Model
{
    private $table = 'user'; //isi nama table user di sini
 
    function __construct()
    {
        parent::__construct();
    }
 
    function register($data)
    {
        $this->db->insert($this->table, $data);
    }
 
    function login($username, $password)
    {
        $data = $this->db
                ->where(array('username' => $username, 'password' => md5($password)))
                ->get($this->table);
 
        //dicek
        if ($data->num_rows() > 0)
        {
            $user = $data->row();
 
            //data hasil seleksi dimasukkan ke dalam $session
            $session = array(
                'logged_in' => 1,
                'id_user' => $user->id_user,
                'group' => $user->group,
                'username' => $user->username,
                'nama_lengkap' => $user->nama_lengkap,
            );
 
            //data dari $session akhirnya dimasukkan ke dalam session (menggunakan library CI)
            $this->session->set_userdata($session);
            return true;
        }
        else
        {
            $this->session->set_flashdata('notification', 'Username dan Password tidak cocok');
            return false;
        }
    }
 
    function logout()
    {
        $this->session->sess_destroy();
    }
}

Untuk menggunakannya, caranya cukup dengan meload model tersebut, kemudian masukkan variable post dari form login ke dalam parameter dari function login() di model account_model…

Salah satu contoh penggunaan di controller:

...
    function masuk()
    {
        $post = $this->input->post('login');
        if($post==NULL)
        {
            $this->load->view('login');
        }
        else
        {
            if($this->account_model->login($post['username'], $post['password']))
            {
                 redirect('member');
            }
            else
            {
                 redirect('member/login');
            }
        }
    }
...
}

Kode di atas hanya contoh saja, contoh lengkapnya akan dilanjutkan pada tutorial ini juga (part II)… cape hehe mau lanjut kerja dulu.. :P
Pada tutorial selanjutnya saya lanjut lengkap dengan form registrasi, form login, controller: daftar, masuk, dan keluar sistem….

coming soon ya.. ;)

~ Cheyuz

 

sumber : http://harian.cheyuz.com/tutorial/tutorial-codeigniter-dasar-part-v-user-accounts-chapter-1

About Suendri

Owner dan Founder Go Software Media sebelumnya bernama PHPBeGO Foundation

Discussion

No comments yet.

Tinggalkan Komentar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow Go Software Media Blog on WordPress.com

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 63 other followers

Archives

%d bloggers like this: