Website Sekolah CodeIgniter Bagian II: Membuat Login Authentikasi User (Admin, Guru, Siswa, Alumni)

Update :  Kode Programnya udah di migrasi ke CI 2.0.2, biar lebih fresh… :-) , selengkapnya di => Website Sekolah dengan CodeIgniter : Migrasi ke CodeIgniter 2.0.2

Heii semua….

Alhmdulillah.. kali ini ak  masih diberi kesempatan utk melanjutkan tulisan ku tentang membuat website sekolah dengan CodeIgniter. Pada bagian II ini aku akan Login Authentikasi User untuk Admin, Guru, Siswa, dan Alumni. Tentu dng algorithm yg sederhana.. Krn aku baru bisa yang sederhana2 gt…:)

Download Full Source Code  | Demo Online

Baiklah kita mulai saja… dan langkahnya adalh sebagai berikut:

1.  Download master CodeIgniter versi terbaru di CodeIgniter.com

2.  Install CodeIgniter di webserver. Pada kesempatan kali aku pake WampServer. Temen2 bisa baca di CodeIgniter 1 # Instalasi dan Konfigurasi untuk langkah instalasinya.

3. Ektrak master CodeIgniter di wamp\www\ ,  rename menjadi sekolahku ,

4.  Ubah base_url pada file config.php dalam folder application/config menjadi seperti ini:


$config['base_url']    = "http://localhost/sekolahku/";

5. Ubah konfigurasi database.php menjadi seperti berikut (sesuikan dengan konfigurasi database server temen2):


$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "sekolahkudb";

6.  Buat database dengan nama dbsekolah sesuai dengan rancangan database pada bagian pertama dari tutorial ini. Atau temen2 bisa copy dan run SQL berikut ini:

-- --------------------------------------------------------

--
-- Table structure for table `alumni`
--

CREATE TABLE `alumni` (
`nama_lengkap` varchar(100) default NULL,
`tahun_lulus` int(11) default NULL,
`alamat` varchar(45) default NULL,
`pekerjaan` varchar(100) default NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`users_id`),
KEY `fk_alumni_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `categories`
--

CREATE TABLE `categories` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `comments`
--

CREATE TABLE `comments` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) default NULL,
`email` varchar(100) default NULL,
`address` varchar(100) default NULL,
`message` varchar(255) default NULL,
`status` tinyint(4) default NULL,
`posts_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`id`),
KEY `fk_comments_posts1` (`posts_id`),
KEY `fk_comments_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `pages`
--

CREATE TABLE `pages` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`permalink` varchar(255) NOT NULL,
`body` text NOT NULL,
`status` tinyint(4) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`id`),
KEY `fk_pages_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `posts`
--

CREATE TABLE `posts` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`permalink` varchar(255) NOT NULL,
`body` text NOT NULL,
`status` tinyint(4) NOT NULL,
`categories_id` int(11) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`id`),
KEY `fk_posts_categories1` (`categories_id`),
KEY `fk_posts_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `students`
--

CREATE TABLE `students` (
`nis` varchar(45) NOT NULL,
`nama_lengkap` varchar(100) NOT NULL,
`kelas` varchar(45) NOT NULL,
`alamat` varchar(255) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`users_id`),
KEY `fk_students_users` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `teachers`
--

CREATE TABLE `teachers` (
`nip` varchar(45) NOT NULL,
`nama_lengkap` varchar(100) NOT NULL,
`golongan` varchar(10) NOT NULL,
`alamat` varchar(255) NOT NULL,
`users_id` int(11) NOT NULL,
PRIMARY KEY  (`users_id`),
KEY `fk_teachers_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(100) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
`type` varchar(45) NOT NULL,
`status` tinyint(4) NOT NULL,
`registered` datetime default NULL,
`last_login` datetime default NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

7.  Masukan beberapa sampel data pada tabel user. Masing2 satu data untuk admin, teachers,students, dan alumni. Temen2 bisa run SQL berikut ini:

INSERT INTO `users` (`id`, `username`, `password`, `email`, `type`, `status`, `registered`, `last_login`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'admin@gie-art.com', 'admin', 1, '2011-01-19 03:18:21', '2011-01-19 03:18:26'),
(2, 'students', '75d37c6cbf460947005c97e3f12906a9', 'students@gie-art.com', 'students', 1, '2011-01-19 03:18:03', '2011-01-19 03:18:08'),
(3, 'teachers', 'ad7d0e29419cc0843e35c6fe93b14d09', 'teachers@gie-art.com', 'teachers', 1, '2011-01-19 03:16:41', '2011-01-19 03:16:44'),
(4, 'alumni', '9855f5cdff0306ae33a49f89e087ccbc', 'alumni@gie-art.com', 'alumni', 1, '2011-01-19 03:19:10', '2011-01-19 03:19:12');

Naaah…. sekarang adalah saatnya coding di CodeIgniter. Aku terbiasa mulai dari pembuatan model terlebih dahulu, baru kemudian membuat Controller dan View.

Login user yang akan dibuat kali ini adalah untuk memfasilitasi 4 tipe user, yaitu admin,teachers, students, dan alumni. Jadi hasil akhir pada bagian ini adalah bahwa setiap user bisa login dengan akun yang telah ditentukan dan user tersebut akan di arahkan ke halamannya masing2. Ketika seorang admin login dan berhasil maka dia akan dibawa  ke halaman administrator, begitu pula untuk students,teachers, dan alumni.

Sebelum pembuatan model, ada beberapa library dan helper yang perlu di set autoload terlebih dahulu pada file autoload.php dalam folder application/config :


$autoload['libraries'] = array('database', 'session', 'form_validation');

$autoload['helper'] = array('url', 'form', 'text');

8. Membuat model users_model. Masuklah pada folder application/model kemudian buat file php dengan nama users_model.php. Kemudian ketik program seperti berikut:


<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

class Users_model extends CI_Model {

    var $tabel_name = 'users';

    function  __construct() {
        parent::__construct();
    }

    function cek_user_login($username, $password) {
        $this->db->select('*');
        $this->db->where('username', $username);
        $this->db->where('password', md5($password));

        $query = $this->db->get($this->tabel_name, 1);

        if ($query->num_rows() == 1) {
            return $query->row_array();
        }
    }

}
?>

9.  Masuklah pada folder controllers kemudian buat file users.php dan ketikkan kode program berikut ini:


<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

class Users extends CI_Controller {

    function  __construct() {
        parent::__construct();
        $this->load->model('Users_model');
    }

    function login() {

        $this->form_validation->set_rules('username', 'username', 'required|xss_clean');
        $this->form_validation->set_rules('password', 'password', 'required|xss_clean');

        $this->form_validation->set_error_delimiters('', '<br/>');

        if ($this->form_validation->run() == TRUE) {
            $username = $this->input->post('username');
            $password = $this->input->post('password');

            $login_data = $this->Users_model->cek_user_login($username, $password);
			if($login_data){
            $session_data = array(
                'user_id' => $login_data['id'],
                'username' => $login_data['username'],
                'type' => $login_data['type'],
                'is_login' => TRUE
            );

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

            redirect('users/dashboard');

			}else{
				$this->session->set_flashdata('message','Login Gagal, Kombinasi username dan password salah.');
				redirect('users/login');
			}
        }
        $this->load->view('users/login');
    }

    function dashboard() {
        $this->check_logged_in();
        $this->load->view('users/dashboard');
    }

    function logout() {

        $data = array
            (
            'user_id' => 0,
            'username' => 0,
            'type' => 0,
            'is_login' => FALSE
        );

        $this->session->sess_destroy();
        $this->session->unset_userdata($data);

        redirect('users/login');
    }

    public function check_logged_in() {
        if ($this->session->userdata('is_login') != TRUE) {
            redirect('users/login', 'refresh');
            exit();
        }
    }

    public function is_logged_in() {
        if ($this->session->userdata('logged_in') == TRUE) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

10. Masukklah pada folder views kemudian buat folder users dan di dalamnya buat dua file yaitu : login.php dan dashboard.php dengan kode program masing2 sperti berikut:

login.php


<h2>Login User</h2>
<hr/>
<?php if($this->session->flashdata('message')):?>
<?php echo $this->session->flashdata('message');?>
<?php endif;?>
<?php echo validation_errors();?>
<?php echo form_open('users/login') ?>
<br/>
Username : <?php echo form_input('username') ?><br/>
Password : <?php echo form_password('password'); ?><br/>
<?php echo form_submit('submit', 'Login') ?>
<?php echo form_close(); ?>

dashboard.php

<h2>Dashboard User</h2><br/>
Anda adalah :
<?php
if ($this->session->userdata('type') == 'admin'):
    echo 'Admin';
elseif ($this->session->userdata('type') == 'teachers'):
    echo 'Teachers';
elseif ($this->session->userdata('type') == 'students'):
    echo 'Students';
elseif ($this->session->userdata('type') == 'alumni'):
    echo 'Alumni';
endif;
?>
<br/>
<h3><strong><?php echo anchor('users/logout', 'Logout') ?></strong></h3>

Baiklaaah.. sampai disini kita sudah mengerjakan 1 buah modul untuk login user. Dan kita bisa melihat hasilnya dengan mengetikkan http://localhost/sekolahku/index.php/users/login . Apabila tidak ada kesalahan maka tampilanya akan seperti berikut ini:

Login User Website Sekolah

Login User Website Sekolah

Download Full Source Code  | Demo Online

Sekian… selamat mencoba dan kita jumpa lagi di episode berikutnya….:-)

CodeIgniter 1 # Instalasi dan Konfigurasi

Membuat Website Sekolah dengan CodeIgniter : Bagian I

Heii semua….

ini adalah postingan aku yang pertama kali di tahun 2011 (hmmm kesed bgt yo).. maklum akhir tahun kmrin sibuk bgt jew…ckckck

Nah,  kali ini aku mau nulis artikel tentang membuat website sekolah dengan CodeIgniter. Sekalian belajar, sekalian berbagi… Bagi yang pemula mungkin ini bisa dijadiin tambahan tutorial.,, emm.. bagi yang udah mahir CI.. klo ada salah tolong dikoreksi ya!!!….:D

Berikut ini adlah beberapa fitur sederhana yang akn dibuat:

Bagian Admin:

  • Manage User
  • Manage Pages
  • Manage Posts/ Articles
  • Manage Comments

Bagian Alumni:

  • Register sebagai Alumni
  • Edit Profile
  • Kirim Artikel

Bagian Siswa:

  • Register sebagai Siswa
  • Edit Profile
  • Kirim Artikel

Bagian Guru:

  • Register sebagai Guru
  • Edit Profil
  • Kirim Artikel

Rancangan Database

Untuk mengakomodasi beberapa fitur di atas maka dirancang sebuah database seperti berikut:

rancangan database

rancangan database

Baik lah kawan…. untuk bgian I dari tutorial Membuat Website Sekolah dengan CodeIgniter cukup sekian dulu.. Pada kesempatan berikutnya kita akan memulai implementasi rancangan ini dengan CodeIgniter… SEMANGAAT!!….:)

Plugin from the creators of Brindes :: More at Plulz Wordpress Plugins