Pemrograman

Bahasa

Framework

Peralatan

Info

Cara Membuat Login dengan Username dan Alamat Email di CodeIgniter

– 30 May 2016
CodeIgniter - Petani KodeKadang pengguna (selanjutnya kita sebut user) sering lupa username-nya, sebagai alternatif user kadang memasukan alamat email-nya di halaman login. Karena user lebih mengingat alamat email daripada username yang telah ia daftarkan. Oleh karena itu, kita perlu membuat sistem login yang mampu menerima username dan alamat email. Sehingga user dapat memilih, mau login dengan username atau email.

Model User

Sebenarnya, inti dari membuat login yang dapat menerima username dan password adalah permainan query saja. Kita akan membuat sebuah query untuk mencari user dengan logika clause where kira-kira begini: temukan user dengan username petanikode atau alamat petanikode@ladang.com dan password-nya petanitanamkode. Query tersebut dapat kita buat dalam model User, kira-kira bentuknya seperti berikut ini.
<?php

class User extends CI_Model {

public function cek_user($username, $password) {
    $this->db->where("email = '$username' or username = '$username'");
    $this->db->where('password', md5($password));
    $query = $this->db->get('user');
    return $query->row_array();
  }
}

Controller Login

Controller login akan mengecek username atau email dan password yang diinputkan user kemudian mencocokannya dengan data yang ada di database. Jika cocok, maka login berhasil. Berikut ini kode Controller login.
<?php
class Login extends CI_Controller {
    public function index() { 
        $this->load->view('halaman_login'); 
    } 

    public function proses_login() { 
        $user = $this->input->post('username'); 
        $pass = $this->input->post('password'); 

        $login = $this->user->cek_user($user, $pass); 

        if (!empty($login)) { 
            // login berhasil 
            $this->session->set_userdata($login); 
            redirect(base_url()); 
        } else { 
            // login gagal 
            $this->session->set_flashdata('gagal', 'Username atau Password Salah!'); 
            redirect(base_url('login')); 
        } 
    } 
}
Jika login berhasil, user akan dialihkan ke halaman utama. Nanti di halaman utama dilakukan pengecekan session agar halaman tersebut dapat dilihat oleh user yang sudah login saja.

VIew Login

Dalam method index() controller Login, kita me-load view halaman_login.php, berikut ini kode halaman_login.php.
<form action="<?php echo base_url('login/proses-login') ?>" method="post"> 
      <div class="form-group has-feedback"> 
        <input type="text" class="form-control" placeholder="Username atau Email" name="username" required id="username"> 
        <span class="glyphicon glyphicon-user form-control-feedback"></span> 
      </div> 
      <div class="form-group has-feedback"> 
        <input type="password" class="form-control" placeholder="Password" name="password" required> 
        <span class="glyphicon glyphicon-lock form-control-feedback"></span> 
      </div> 
      <div class="row"> 
        <div class="col-xs-8"> 
          <div class="checkbox icheck"> 
            <label> 
              <input type="checkbox"> Ingat Saya 
            </label> 
          </div> 
        </div> 
        <!-- /.col --> 
        <div class="col-xs-4"> 
          <button type="submit" class="btn btn-primary btn-block btn-flat">Masuk</button> 
        </div> 
        <!-- /.col --> 
      </div> 
    </form>
Halaman login menggunakan AdminLTE yang sudah diberikan sedikit CSS, berikut ini tampilannya.

Kesimpulan

Pembuatan sistem login yang dapat menerima username dan alamat email pada CodeIgniter dilakukan dengan memanipulasi query pada model. Logika clause where yang digunakan adalah username or email and password.