Jumat, 07 April 2017

Membuat Login dan Session pada Codeigniter


Dalam pembuatan system aplikasi berbasis website biasanya  diperlukan menu login pada homepage  dimana menu login ini berfungsi untuk memberikan akses kepada  user agar bisa masuk  kedalam menu system sebagai anggota atau member.  pada kesempatan ini saya akan membuat tutorial bagaimana cara membuat menu login dengan session pada codeigniter.  sedikit penjelasan tentang session,  session adalah salah satu fasilitas yang ada pada PHP yang digunakan untuk menyimpan data sementara ke dalam variabel (variabel session) sehinga data tadi dapat di akses oleh client selama variabel session tadi tidak di kosongkan atau dihilangkan. Nilai variabel di dalam session di simpan di sisi server (web server). Jadi saat kita melakukan akses login proses pembuatan session kita lakukan, data session kita buat sesuai dengan kebutuhan kita. Untuk lebih jelasnya berikut tutorialnya.

1.Buatlah sebuah project Codeigniter.
2.Selanjutnya buat sebuah database dan sebuah tabel dengan nama tabel tbuser.
CREATE TABLE `tbuser` (
  `id_user` int(11) NOT NULL,
  `nama` varchar(100) NOT NULL,
  `username` varchar(100) NOT NULL,
  `password` varchar(200) NOT NULL,
  `last_login` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
3.Aktifkan libraries session pada config autoload agar otomatis digunakan disemua Class.
$autoload['libraries'] = array('database',  'session');
$autoload['helper'] = array('url', 'form');
4. Buatlah sebuah Controllers  dengan nama class Login.php dan ketikan script berikut untuk menampilkan halaman login.
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends CI_Controller {
 public function index() {    
  $this->load->view('login');
 }
 //script lanjutan dibawahnya
 
}
5. Tambahkan script function baru pada class Login.php  untuk proses Login.
public function do_login() {
    $data       = $this->input->post(null,true);
    $username = $this->security->xss_clean($this->input->post('username'));   
    //proses cek ke database
    $is_login = $this->db->get_where('tb_user',array(
                    'username'=>$data['username'],
                    //'password'=>md5(trim($data['password'])),
                    'password'=>$data['password'])
                )->row();                                   
           
    if($is_login){   
        //proses pembuatan session
        $session_set = array(           
            'is_login'        => true,
            'username'        => $username,                           
            'id_user'        => $is_login->id_user,
            'nama'            => $is_login->nama,
            'last_login'    => $is_login->last_login
        );
        //proses update database
        $this->db->update('tb_user',
                array('last_login'=>date('Y-m-d H:i:s')),
                array('id_user'=>$is_login->id_user)
            );
        $this->session->set_userdata($session_set);
        $this->session->set_flashdata('msg', 
            '<div class="alert alert-danger">
            <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
            Welcome </div>');   
        //Jika login benar maka masuk kedalam menu home               
        redirect('login/dashboard');           
    } else {
        $this->session->set_flashdata('msg', 
            '<div class="alert alert-danger">
            <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
            username dan password salah </div>');
        //Jika login salah maka kembali ke menu login                   
        redirect('login');
    }
}
6. Tambahkan script function baru pada class Login.php  untuk proses Logout.
public function logout(){        
    $this->session->sess_destroy();
    redirect('login');
} 

7. Sekarang kita buat  sebuah  Views  untuk tampilan login. Buat sebuah views dengan nama v_login.php disni saya menggunakan template bootstrap mungkin anda bisa menggunakan template sesuai selera anda.
<form role="form" method="post" action="<?php echo base_url();?>login/do_login">
    <input type="text" name="username" class="form-control input-sm chat-input" placeholder="username" />
    </br>
    <input type="password" name="password" class="form-control input-sm chat-input" placeholder="password" />
    </br>
    <div class="wrapper">
    <span class="group-btn">
        <button type="submit" class="btn btn-primary">&nbsp;&nbsp;<i class="fa fa-sign-in"></i> Login&nbsp;&nbsp;</button>
    </span>
    </div>
</form> 
8. Selanjutnya tampilan menu dashboard ketika berhasil login
<div class="container" style="margin-top:20px;">    
    <div class="container">    
        <div class="col-md-12">
        <table class="table table-striped">
        <thead>
            <tr>
                <th>Session id_user</th>
                <th>Session nama</th>
                <th>Session username</th>
                <th>Session last login</th>
            </tr>
        </thead>
            <tr>
                <td><?php echo $this->session->userdata('id_user'); ?></td>
                <td><?php echo $this->session->userdata('nama'); ?></td>
                <td><?php echo $this->session->userdata('username'); ?></td>
                <td><?php echo $this->session->userdata('last_login'); ?></td>
            </tr>    
        </table>
            <tr>
                <td><pre>echo $this->session->userdata('id_user');</pre></td>
                <td><pre>echo $this->session->userdata('nama');</pre></td>
                <td><pre>echo $this->session->userdata('username');</pre></td>
                <td><pre>echo $this->session->userdata('last_login');</pre></td>
            </tr>    
        </div>
    </div>
</div>
9. Mari kita jalankan. Jika berhasil hasilnya seprti gambar berikut.


Untuk menghapus data session secara otomatis dapat diset pada application/config.php dengan menentukan berapa lama waktu untuk expired session` sess_expiration` sehingga saat anda membuka  website tersebut tanpa melakukan aktivitas maka akan otomatis logout sesuai waktu yang ditentukan.

Demo 

Semoga bermanfaat

Previous Post
Next Post

0 komentar: