Home » Codeigniter » Membuat Login dan Register User di Codeigniter

Membuat Login dan Register User di Codeigniter

Published by Ade Kurniawan on

Halaman login dibuat untuk menentukan batasan akses terhadap suatu halaman sebagai contoh saat menggunakan media sosial, si A sebagai pemilik akun tentu ingin hanya dia yang dapat melakukan posting status, membagi foto, video dan lainnya pada akunnya. Setiap user memiliki batasan kendali berupa akses hanya untuk mengelola akunnya saja dan tidak memiliki akses untuk mengelola akun orang lain. Kondisi ini menjadikan sebuah sistem membutuhkan sebuah halaman login yang dapat membagi tampilan terhadap masing – masing entitas / pihak yang terlibat pada sistem. Contoh tampilan halaman login dan register codeigniter dapat dilihat pada gambar di bawah ini.

Halaman login dibuat dengan menyertakan proses login berupa check data ke database jika user sudah terdaftar pada sistem dan user melakukan proses login dengan cara menginputkan username dan password. Jika data user sudah terdaftar pada sistem dan saat login memasukkan username dan password yang benar maka akan diarahkan ke halaman berikutnya jika tidak mungkin terdapat kesalahan input username dan password atau belum terdaftar pada sistem.

Untuk menyelesaikan alur proses login tersebut maka dibutuhkan sebuah form login, proses login untuk check ke database  dan halaman beranda yang dituju setelah berhasill login.

Untuk membuat halaman login dan register di codeigniter dibutuhkan file – file berikut :
1. tabel user pada database
2. user.php dengan validation pada controller
3. login.php pada view
4. register.php pada view

Langkah Membuat login di codeigniter 

1. Buatlah tabel user sebagai berikut :


2. Controller untuk login dan register dengan nama user.php sebagai berikut

User.PHP

<?php
    class User extends CI_Controller{
    function __construct(){
    parent:: __construct();    
    $this->load->model('user_model');
    $this->load->helper('url','form');
    $this->load->library(array('form_validation','session'));
    }
        // Register user
        public function register(){
            $data['title'] = 'Sign Up';

            $this->form_validation->set_rules('nama', 'Nama', 'required');
            $this->form_validation->set_rules('username', 'Username', 'required|callback_check_username_exists');
            $this->form_validation->set_rules('email', 'Email', 'required|callback_check_email_exists');
            $this->form_validation->set_rules('password', 'Password', 'required');
            $this->form_validation->set_rules('password2', 'Confirm Password', 'matches[password]');

            if($this->form_validation->run() === FALSE){
                $this->load->view('templates/header');
                $this->load->view('register', $data);
            } else {
                // Encrypt password
                $enc_password = md5($this->input->post('password'));

                $this->user_model->register($enc_password);

                // Set message
                $this->session->set_flashdata('user_registered', 'You are now registered and can log in');

                redirect('user/login');
            }
        }

        // Log in user
        public function login(){
            $data['title'] = 'Sign In';

            $this->form_validation->set_rules('username', 'Username', 'required');
            $this->form_validation->set_rules('password', 'Password', 'required');

            if($this->form_validation->run() === FALSE){
                $this->load->view('templates/header');                    
                $this->load->view('login', $data);
                    
            } else {
                
                // Get username
                $username = $this->input->post('username');
                // Get and encrypt the password
                $password = md5($this->input->post('password'));

                // Login user
                $user_id = $this->user_model->login($username, $password);

                if($user_id){
                    // Create session
                    $user_data = array(
                        'user_id' => $user_id,
                        'username' => $username,
                        'logged_in' => true
                    );

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

                    // Set message
                    $this->session->set_flashdata('user_loggedin','Selamat Anda Berhasil Login');

                    redirect('berita');
                } else {
                    // Set message
                    $this->session->set_flashdata('login_failed', '<div class="alert   

           alert-danger text-center">username dan password salah!</div>');

                    redirect('user/login');
                }        
            }
        }

        // Log user out
        public function logout(){
            // Unset user data
            $this->session->unset_userdata('logged_in');
            $this->session->unset_userdata('user_id');
            $this->session->unset_userdata('username');

            // Set message
            $this->session->set_flashdata('user_loggedout', 'You are now logged out');

            redirect('user/login');
        }

        // Check if username exists
        public function check_username_exists($username){
            $this->form_validation->set_message('check_username_exists', 'Usrname Sudah diambil. Silahkan gunakan username lain');
            if($this->user_model->check_username_exists($username)){
                return true;
            } else {
                return false;
            }
        }

        // Check if email exists
        public function check_email_exists($email){
            $this->form_validation->set_message('check_email_exists', 'Email Sudah diambil. Silahkan gunakan email lain');
            if($this->user_model->check_email_exists($email)){
                return true;
            } else {
                return false;
            }
        }
    }


3.  Selanjutnya dibutuhkan sebuah  form login pada view. berikut script yang digunakan untuk membuat login pada view :

Login.php

<?php echo form_open('user/login'); ?>
     <div class="row justify-content-center">
         <div class="col-lg-4">
             <h1 class="text-center"><?php echo $title; ?></h1>
             <div class="form-group">
                 <input type="text" name="username" class="form-control" placeholder="Enter Username" required autofocus>
             </div>
             <div class="form-group">
                 <input type="password" name="password" class="form-control" placeholder="Enter Password" required autofocus>
             </div>
             <button type="submit" class="btn btn-primary btn-block">Login</button>
             <br>
                   <?php echo $this->session->flashdata('login_failed'); ?>
             
         </div>

        <h2></h2> 
     </div>

<?php echo form_close(); ?>

Pada script login di atas kita membuat proses untuk login ke kontroller user dengan fungsi/login dengan perintah form_open jika login berhasil maka pada halaman yang dituju akan muncul alert login berhasil jika login gagal maka akan muncul alert username dan password salah.

4. Buatlah view untuk register sebagai berikut:

register.php

<div class="container">

<?php echo form_open('user/register'); ?>
<?php echo validation_errors(); ?>    
<div class="row justify-content-center">    
        <div class="col-md-4">
            <h1 class="text-center"><?= $title; ?></h1>
            <div class="form-group">
                <label>Nama</label>
                <input type="text" class="form-control" name="nama" placeholder="Nama">
            </div>
            <div class="form-group">
                <label>Email</label>
                <input type="email" class="form-control" name="email" placeholder="Email">
            </div>
            <div class="form-group">
                <label>Username</label>
                <input type="text" class="form-control" name="username" placeholder="Username">
            </div>
            <div class="form-group">
                <label>Password</label>
                <input type="password" class="form-control" name="password" placeholder="Password">
            </div>
            <div class="form-group">
                <label>Confirm Password</label>
                <input type="password" class="form-control" name="password2" placeholder="Confirm Password">
            </div>
            <button type="submit" class="btn btn-primary btn-block">Register Now</button>
        </div>
</div>
<?php echo form_close(); ?>
</div>

Script register di atas di buat untuk memasukkan username dan password ke database, form register memiliki validation dan function check username exists dan check email exists.

Setelah melakukan register baru kita memiliki akses untuk login dengan memasukkan username dan password yang telah di registrasi.

5. Model
Model digunakan untuk memfasilitasi akses ke database disini dugunakan user model yang terdiri atas 4 function sebagai berikit:
User_model.php

<?php
 class User_model extends CI_Model{
  public function register($enc_password){
   // User data array
   $data = array(
    'nama' => $this->input->post('nama'),
    'email' => $this->input->post('email'),
                'username' => $this->input->post('username'),
                'password' => $enc_password,
   );

   // Insert user
   return $this->db->insert('user', $data);
  }

  // Log user in
  public function login($username, $password){
   // Validate
   $this->db->where('username', $username);
   $this->db->where('password', $password);

   $result = $this->db->get('user');

   if($result->num_rows() == 1){
    return $result->row(0)->id;
   } else {
    return false;
   }
  }

  // Check username exists
  public function check_username_exists($username){
   $query = $this->db->get_where('user', array('username' => $username));
   if(empty($query->row_array())){
    return true;
   } else {
    return false;
   }
  }

  // Check email exists
  public function check_email_exists($email){
   $query = $this->db->get_where('user', array('email' => $email));
   if(empty($query->row_array())){
    return true;
   } else {
    return false;
   }
  }
 }

function register digunakan untuk menginputkan data registrasi berupa nama, email dan password.
function login digunakan sebagai authentificataion validasi ke database berupa pengecekan jika data ada pada database maka (==1) maka login bernilai true dan data dapat digunakan oleh controller untuk dimulai session id user..

function check username exist digunakan untuk mengecek ketersedian username jika sudah digunakan maka username tidak bisa lagi digunakan..

function check email exist digunakan untuk mengecek ketersedian email jika sudah digunakan maka email tidak bisa lagi digunakan kedua function ini menggunakan check empty jika empty maka status true jika tidak maka empty false.


14 Comments

Ozi Saputra · December 19, 2019 at 11:46 am

User_model nya lupa nih mas ;d

Ade kurniawan · December 20, 2019 at 3:05 am

oh iya mas ozi…
ok Nanti Ditambahkan..
terimakasih
mengingatkan…

ORETANKU · January 7, 2020 at 4:19 am

User_modelnya gan ? hehe

Ade kurniawan · January 27, 2020 at 9:11 pm

User_modelnya sudah ditambahkan gan…

Unknown · January 31, 2020 at 2:03 am

Cara ceknya Gmna?

Ade Kurniawan · January 31, 2020 at 8:12 am

Cek Apanya Mas??

anonim · March 19, 2020 at 9:26 am

punya saya muncul tulisan “Unable to load the requested file: templates/header.php” gimana ya

    Ade Kurniawan · April 28, 2020 at 4:24 am

    Silahkan di cek lagi load templates/header.php pada controller apakah sudah di load.
    selanjutnya jika folder templates sudah ada pada view pastikan juga berisi file header.php

yusuf · June 30, 2020 at 4:32 am

gan ini pakek ci 4 apa 3 ya?

    Ade Kurniawan · July 2, 2020 at 1:49 am

    Pakai codeigniter 3 gan yusuf

yusuf · June 30, 2020 at 4:32 am

terus cara run projectnya gmana?

isal · July 13, 2020 at 1:38 am

mas saya mau coba ci 4 kenapa di bagian controller nya salah ya

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *