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

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 wampwww ,  rename menjadi sekolahku ,

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

[php]

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

[/php]

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

[php]

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

[/php]

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:

[sql]
— ——————————————————–


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

[/sql]

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

[sql]
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’);

[/sql]

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 :

[php]

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

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

[/php]

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]

<?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();
}
}

}
?>

[/php]

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

[php]

<?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;
}
}
[/php]

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

[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(); ?>
[/php]

dashboard.php

[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>

[/php]

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

About the author

gieart administrator

53 Comments so far

HaqqiPosted on7:58 am - Jan 31, 2011

Wah, keren nih tutorialnya. Saya juga kebetulan sedang membuat web untuk sekolah juga.. Hehe.. bisa sharing2 nih.. 🙂

aguPosted on7:32 am - Feb 28, 2011

Fatal error: Class ‘Controller’ not found in C:wampwwwsekolahkuapplicationcontrollersusers.php on line 8

kenapa ya kayak gitu? padahal udah sama.

    adminPosted on8:20 am - Feb 28, 2011

    Kemungkinan struktur direktori CI nya yng gak sengaja kerubah mas.. krn Fatal error: Class ‘Controller’ not found in C:wampwwwsekolahkuapplicationcontrollersusers.php on line 8 menunjukan bahwa Controller class milikny CI tidak bisa di load. Mungkin download saja full source code yng saya sertakan dalam postingan ini sebagai pembanding dari kode program yg mas buat.. trims

joePosted on11:09 am - Apr 5, 2011

bod kalau mw buat login untuk setiap siswa gmn y, tapi hanya siswa tersebut aja yang bisa membuka datanya.

eky adhiputraPosted on8:23 am - Apr 20, 2011

kereen mas, numpang baca ya 😀

eszaPosted on12:01 am - May 11, 2011

mas bro ko aku g bisa donlot source code nya…..cara donlot nya gmn mas bro?:D

Andi EkoPosted on7:53 am - May 25, 2011

keren mas .. bisa diaplikasikan di versi 2.0.2
Apakah masih diteruskan aplikasinya ?

bezoPosted on3:56 am - May 26, 2011

susah sekali download source full nya, bisa d kirim ga k email ixnugros@gmail.com

lukiPosted on10:33 am - Jun 9, 2011

salam knal gan wah mantap tutorialnya langsung praktekin…

anggunPosted on8:58 am - Jun 21, 2011

salam kenal mas, trims untuk tutorialnya, tapi sepertinya jika salah password / username koq tetap masuk dashboard ya,mhon bantuannya,trims

adminPosted on11:00 am - Jun 21, 2011

Upss.. thanks Anggun, spertinya kurang 1 kondisi lagi.. nanti saya upgrade.. trims atas koreksinya.. 🙂

newbieePosted on2:33 am - Jul 21, 2011

Fatal error: Class ‘Controller’ not found in C:xampphtdocsoilclinicapplicationcontrollersusers.php on line 8

coba baru dari awal nih mas…jadinya bbegitu…

bedanya pake CI_Controller nih..ma Controller pas di extend…huft…

aanPosted on4:04 pm - Aug 8, 2011

Permisi mas mau konsultasi

untuk yang di config itu
$config[‘encryption_key’] = ‘sekolahku789’;

itu bisa dijelaskan kok pakai sekolahku789
itu dari mana ya mas … (aku bingung)

imamarifPosted on3:42 am - Oct 12, 2011

salam kenal

mas saya sudah coba download dan seting ke apache. dan sudah tampil sama sperti di contoh tapi saya ga bisa masuk sebagai admin.
kalo boleh tau gmn caranya saya bisa login sebagai admin untuk mencoba mengisi berita dan lain-lainya.
sekian dan terima kasih.

imamarifPosted on7:53 am - Oct 14, 2011

sore mas
saya dah coba login dengan admin..
tapi kok tampilannya cuma begini doang.

Dashboard User

Anda adalah : Admin
Logout

ga kelihatan dasbordnya untuk edit berita .
mohon pencerahan..
sekian terimakasih

    adminPosted on2:56 pm - Oct 19, 2011

    Hehe.. ini baru bagian 2 mas.. Belum sempat lanjutin bagian2 berikutnya. :), insyalloh nanti dibahas ke feature2 yng umum di miliki website sekolah. 🙂

rivan-ipaiPosted on10:01 pm - Nov 10, 2011

mas mau tnya..ini form loginnya kl berhasil login masuk kman lg yah??saya sudh berhasil sampai muncul form login tapi setelah saya masukin passwordnya dan username lalu login ternyata salah..saya ganti sebenarnya passwordnya setiap data admin, teacher,alumni dan students..mohon petunjuknya mas..hehe

rianPosted on1:17 pm - Nov 12, 2011

wah ini benar2 sangat membantu…..
terimakasih…

Roes WibowoPosted on10:37 am - Dec 26, 2011

Halo salam kenal. Keliling cari inspirasi tentang CI nih sampe akhirnya mampir di sini.hehe
Itu masih index.php keliatan ya? Coba kasih file htaccess di bawah ini supaya lebih clean urlnya:

RewriteEngine on
RewriteCond $1 !^(index.php)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Nanti url bisa bisa langsung: “http://localhost/sekolahku/users/login” yang ini “http://localhost/sekolahku/index.php/users/login” juga masih bisa sih. Btw nice post, walaupun lebih cocok judulnya “Website Login” karena saya lihat function untuk CRUD belum keliatan.hehehe :peace

Mbak HawaPosted on8:25 am - Apr 14, 2012

mau nanya nih, untuk membuat halaman dashboard untuk tiap2 member gimana ya? mohon bantuannya

    Gie ArtPosted on12:53 pm - Apr 14, 2012

    sebenarny tutorial ini nantinya jg setiap member (guru,siswa, alumni, admi) mempunyai dashboard sendiri2.. cuma blum sempat melanjutkan saja.hehe. Tpi utk konsep sederhana mungkin bisa dibuat view, dan controller sndiri2 utk masing2 member dan ditambahkan pengecekan hak akses. Utk pengecekan hak akses sederhana bisa di lihat di postingan ini –> http://gie-art.com/2012/03/web… , yng mungkin bisa Anda kembangkan sendiri sesuai kebutuhan. Semoga saya segera dapat melanjutkan tutorial ini smp selesai.. hehe 🙂

HawaPosted on8:29 am - Apr 14, 2012

mau nanya nih, untuk membuat halaman dashboard untuk tiap2 member gimana ya? mohon bantuannya
 

Wisnu ArdhanPosted on7:24 am - May 29, 2012

kok ada pesan eror gini..
In order to use the Session class you are required to set an encryption key in your config file.
artinya apa ya gan?

Meytha Zennis ThalityPosted on3:43 am - Jul 11, 2012

lagi ngedit tampilan loginnya tapi gasesuai , mas gie kasih aku script login yg mudah diedit , setiap aku tambahin <? php echo form_open('users/login')?> tampilannya jadi acak2an , tapi kalo aku jadiin komentar jd bagus lg HANYA gabisa login hehehe mohon sarannya yaaaah makasi 😀
*newbie

AnonymousPosted on3:27 am - Jul 12, 2012

Mas cepet posting lagi dong , terusin aku dikejar project yg ga aku ngerti nih.
cuma berharap dari artikel yg mas buat heheeh.
*newbie

BaryoPosted on2:38 pm - Jul 12, 2012

 kalau tampilan seperti ini  apa yang salah mas

A Database Error Occurred
Unable to connect to your database server using the provided settings.Filename: C:Program FilesxampphtdocssekolahsystemdatabaseDB_driver.phpLine Number: 124

Rifan Achmad SyauriPosted on4:27 am - Jul 17, 2012

mau nanya nih, klo bug nya kya yg di bwah itu dimna nya yg bug, mohon bantuannya;.

"Parse error: parse error, expecting `T_FUNCTION' in".

DwiPosted on8:39 pm - Nov 12, 2012

mantep ni postingannya gan pertamaxxxxxx gannnnn

Leave a Reply