Please enable JavaScript!
Bitte aktiviere JavaScript!
S'il vous plaît activer JavaScript!
Por favor,activa el JavaScript!
antiblock.org

 |  | 
Anda ingin membuat website?
Untuk Anda yang sedang mencari orang untuk jasa pembuatan website, Saya akan bantu buatkan aplikasi sesuai kebutuhan Anda. Segera hubungi : mail@rizaldimaulidia.com. Selengkapnya tentang profil saya klik www.rizaldimaulidia.com.

Codeigniter

Cara Mudah Membuat Form Login dengan Codeigniter dan MySQL

img-responsive

Beberapa waktu yang lalu saya sudah membuat catatan / tutorial mengenai Cara Mudah Membuat Form Login dengan Session PHP. Berbeda dengan tutorial yang akan kita bahas kali ini, pada tutorial ini kita akan membuat form login dengan menggunakan Framework Codeigniter 3 dan Database MySQL. Tentunya dalam tutorial ini kita akan menggunakan yang namanya “Session“. Apa itu Session? Session dapat menyimpan sebuah informasi dimana informasi tersebut bisa kita akses pada semua halaman website yang kita buat. Secara default, Session akan terhapus sampai Anda menutup browser. Jadi intinya Session ini bisa menyimpan informasi yang bisa di akses pada semua halaman sampai browser nya ditutup.

Akun User
Saya telah menyiapkan 2 data user untuk tutorial ini, diantaranya :

  1. User 1
    Username : rizaldi
    Password : 12345678
  2. User 2
    Username : siska
    Password : siska123

DEMO
Sebelum masuk ke tutorialnya. Mungkin ada yang mau lihat demonya terlebih dahulu. Silahkan klik link berikut untuk melihat demonya : Lihat Demo.


STEP 1 – PERSIAPAN
Berikut ini adalah hal-hal yang harus dipersiapkan :

  1. Download Framework Codeigniter, klik link berikut : download.
  2. Buat sebuah folder baru dengan nama login_ci, lalu simpan pada folder xampp/htdocs/.
  3. Ekstrak codeigniter_v3.7z yang telah di download tadi.
  4. Copy semua file dan folder yang ada di folder codeigniter_v3 yang telah di ekstrak tadi ke folder xampp/htdocs/login_ci/.


STEP 2 – DATABASE
Pada step ini, kita akan membuat databasenya. ikuti langkah-langkah berikut ini :

  1. Buat sebuah database dengan nama mynotescode.
  2. Buat sebuah tabel dengan nama user. Struktur tabelnya sebagai berikut :
    Struktur Tabel - Cara Mudah Membuat Form Login dengan Codeigniter dan MySQL

    CREATE TABLE `user` (
       `id` int(11) NOT NULL AUTO_INCREMENT,
       `username` varchar(20) NOT NULL,
       `password` varchar(50) NOT NULL,
       `nama` varchar(200) NOT NULL,
       PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1

STEP 3 – KONFIGURASI
Karena dibuat dengan Codeigniter, pertama kita harus melakukan konfigurasi terlebih dahulu pada framework codeigniternya.

  1. Buka folder xampp/htdocs/login_ci/application/config/
  2. Buka file config.php
    Cari kode berikut $config['base_url'] = '';Ubah kode tersebut jadi seperti ini :

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

    Kode diatas digunakan untuk menset baseurlnya.
    Lalu simpan file tersebut.

  3. Buka file autoload.php
    Cari kode berikut ini :

    $autoload['libraries'] = array();
    $autoload['helper'] = array();

    Ubah jadi seperti ini :

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

    Kode diatas digunakan untuk memuat (menload) class database dan url.
    Lalu simpan file tersebut.

  4. Buka file routes.php
    Cari kode berikut ini :

    $route['default_controller'] = 'welcome';

    Ubah jadi seperti ini :

    $route['default_controller'] = 'auth';

    Kode diatas digunakan untuk menset controller mana yang akan diload pertama kali. Secara default, Codeigniter telah menset default controller yaitu welcome. Disini kita set default controller menjadi auth.
    Lalu simpan file tersebut.

  5. Buka file database.php
    Cari kode berikut ini :

    'hostname' => 'localhost',
    'username' => '',
    'password' => '',
    'database' => '',

    Ubah jadi seperti ini :

    'hostname' => 'localhost', // Nama host
    'username' => 'root', // Username
    'password' => '', // Jika menggunakan password isi, jika tidak kosongkan saja
    'database' => 'mynotescode', // Nama databasenya

    Kode diatas digunakan untuk koneksi ke database.
    Lalu simpan file tersebut.


STEP 4 – BUAT MODEL
Langkah selanjutnya adalah membuat modelnya. Buat sebuah file dengan nama UserModel.php, Lalu simpan pada folder xampp/htdocs/login_ci/application/models/. Berikut kodenya :

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class UserModel extends CI_Model {
    
    public function get($username){
        $this->db->where('username', $username); // Untuk menambahkan Where Clause : username='$username'
        $result = $this->db->get('user')->row(); // Untuk mengeksekusi dan mengambil data hasil query

        return $result;
    }
}

Fungsi get() berguna untuk melakukan query ke tabel user berdasarkan username yang diinput pada form login. Fungs ini akan menghasilkan query sebagai berikut : SELECT * FROM user WHERE username=’$username’.


STEP 5 – BUAT CONTROLLER AUTH
Pada tahap ini, kita akan membuat controller untuk proses login dan logout. Buat sebuah file dengan nama Auth.php, lalu simpan pada folder xampp/htdocs/login_ci/application/controllers/. Berikut ini kodenya :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Auth extends CI_Controller {

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

    $this->load->model('UserModel');
  }

  public function index(){
    if($this->session->userdata('authenticated')) // Jika user sudah login (Session authenticated ditemukan)
      redirect('page/welcome'); // Redirect ke page welcome

    $this->load->view('login'); // Load view login.php
  }

  public function login(){
    $username = $this->input->post('username'); // Ambil isi dari inputan username pada form login
    $password = md5($this->input->post('password')); // Ambil isi dari inputan password pada form login dan encrypt dengan md5

    $user = $this->UserModel->get($username); // Panggil fungsi get yang ada di UserModel.php

    if(empty($user)){ // Jika hasilnya kosong / user tidak ditemukan
      $this->session->set_flashdata('message', 'Username tidak ditemukan'); // Buat session flashdata
      redirect('auth'); // Redirect ke halaman login
    }else{
      if($password == $user->password){ // Jika password yang diinput sama dengan password yang didatabase
        $session = array(
          'authenticated'=>true, // Buat session authenticated dengan value true
          'username'=>$user->username,  // Buat session username
          'nama'=>$user->nama // Buat session authenticated
        );

        $this->session->set_userdata($session); // Buat session sesuai $session
        redirect('page/welcome'); // Redirect ke halaman welcome
      }else{
        $this->session->set_flashdata('message', 'Password salah'); // Buat session flashdata
        redirect('auth'); // Redirect ke halaman login
      }
    }
  }

  public function logout(){
    $this->session->sess_destroy(); // Hapus semua session
    redirect('auth'); // Redirect ke halaman login
  }
}

if($this->session->userdata(‘authenticated’))
Kode diatas berfungsi untuk mengecek apakah session dengan nama authenticated ada atau tidak. Jika ada, artinya user sudah login. Jika tidak ada, berarti user belum login.

$user = $this->UserModel->get($username)
Kode diatas berfungsi untuk memanggil fungsi get() yang ada di UserModel.php untuk mendapatkan data user yang ada didatabase berdasarkan username.

$this->session->set_flashdata(‘message‘, ‘Username tidak ditemukan‘)
Kode diatas untuk membuat session flashdata. Session ini sifatnya hanya sementara, jadi ketika sudah dibaca, maka akan otomatis terhapus. Struktur dasar kodenya adalah $this->session->set_flashdata(‘nama_session‘, ‘isi_session‘). Lebih jelasnya soal session flashdata anda bisa baca disini.

$this->session->set_userdata($session)
Kode diatas berfungsi untuk membuat session. Sebenarnya di codeigniter ada 2 opsi cara membuat array antara lain :

  1. Jika anda ingin membuat session lebih dari 1, sebaiknya pakai cara ini :
    (dalam tutorial ini, kita menggunakan cara ini)
    $session = array(
    ‘nama_session1’=>’isi_session1’,
    ‘nama_session2’=>’isi_session2’,
    ‘nama_session3’=>’isi_session3’ 
    );$this->session->set_userdata($session);
  2. Jika anda ingin membuat hanya 1 session, pakai cara ini :
    $this->session->set_userdata(‘nama_session1’, ‘isi_session1’);


STEP 6 – BUAT FORM LOGIN
Pada tahap ini, kita akan membuat form loginnya. Buat sebuah file dengan nama login.php, lalu simpan pada folder xampp/htdocs/login_ci/application/views/. Berikut ini tampilan dan kodenya :

Form Login - Cara Mudah Membuat Form Login dengan Codeigniter dan MySQL

<html>
<head>
  <title>Form Login</title>
</head>
<body>
  <h1>Silahkan login terlebih dahulu...</h1>

  <div style="color: red;margin-bottom: 15px;">
    <?php
    // Cek apakah terdapat session nama message
    if($this->session->flashdata('message')){ // Jika ada
      echo $this->session->flashdata('message'); // Tampilkan pesannya
    }
    ?>
  </div>

  <form method="post" action="<?php echo base_url('index.php/auth/login') ?>">
    <label>Username</label><br>
    <input type="text" name="username" placeholder="Username"><br><br>

    <label>Password</label><br>
    <input type="password" name="password" placeholder="Password"><br><br>

    <button type="submit">Login</button>
  </form>
</body>
</html>

if($this->session->flashdata(‘message‘))
Kode diatas berfungsi untuk memanggil session flashdata dengan nama message yang dibuat pada controller auth fungsi login (jika data user tidak ditemukan). Struktur dasar kodenya adalah $this->session->flashdata(‘nama_session‘).


STEP 7 – BUAT CORE SENDIRI
Pada tahap ini, kita akan membuat sebuah core. Core ini berfungsi untuk mengkontrol akses ke halaman setelah login. Buat sebuah file dengan nama MY_Controller.php, lalu simpan pada folder xampp/htdocs/login_ci/application/core/. Berikut ini kodenya :

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller{
    public function __construct(){
        parent::__construct();

        // Cek apakah terdapat session dengan nama authenticated
        if( ! $this->session->userdata('authenticated')) // Jika tidak ada
            redirect('auth'); // Redirect ke halaman login
    }
}

Seperti yang saya bilang, core ini akan kita manfaatkan untuk mengkontrol akses ke halaman setelah login. Core ini nanti harus di gunakan pada controller-controller yang bisa diakses setelah login.

public function __construct(){
Kode diatas berguna sebagai fungsi awal yang akan dieksekusi setiap kali Core MY_Controller dipanggil. Jadi sebelum mengeksekusi fungsi lainnya, kode yang ada didalam fungsi __construct() akan terlebih dahulu dieksekusi diawal.

if( ! $this->session->userdata(‘authenticated’))
Fungsi dari kode diatas adalah untuk mengecek apakah session dengan nama authenticated ada atau tidak. Pada if kondisi diatas saya menambahkan tanda seru “!“. Tanda seru tersebut artinya kebalikannya, jadi If disitu jika di terjemahkan adalah jika session authenticated tidak ada, maka redirect ke halaman login.


STEP 8 – BUAT CONTROLLER PAGE
Selanjutnya, kita akan membuat controller page. Buat sebuah file dengan nama Page.php, lalu simpan pada folder xampp/htdocs/login_ci/application/controllers/. Berikut ini kodenya :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Page extends MY_Controller {

  public function welcome(){
    $this->load->view('welcome');
  }

  public function thanks(){
    $this->load->view('thanks');
  }
}

Controller ini hanya bisa di akses setelah login. Seperti yang saya bilang pada step sebelumnya, controller yang hanya bisa diakses setelah login harus menggunakan core MY_Controller yang tadi kita buat. Pertanyaannya, cara menggunakannya gimana? Dari kode diatas, anda bisa lihat bahwa controller Page meng-extends ke MY_Controller (class Page extends MY_Controller {). Secara default ketika kita menggunakan Framework Codeigniter, maka setiap controller harus meng-extends ke CI_Controller. Tapi karena pada kasus ini kita telah membuat Core sendiri dengan nama MY_Controller, maka ketika kita akan menggunakan core tersebut, controllernya harus meng-extends ke MY_Controller.

Jadi setiap kita membuka salah satu fungsi di dalam controller Page, maka dia akan mengeksekusi terlebih dahulu kode yang ada di dalam fungsi __construct() pada core MY_Controller, baru setelah itu dia akan mengeksekusi kode yang ada didalam fungsi yang kita buka / panggil.

Kesimpulannya, dengan cara ini, Kode kita akan lebih efisiensi karena kita tidak perlu lagi menambahkan fungsi if untuk mengecek apakah user sudah login atau belum pada setiap fungsi. Karena sudah kita letakan kode tersebut pada core MY_Controller.


STEP 9 – BUAT VIEW WELCOME
Selanjutnya, kita akan membuat tampilan selamat datang yang akan ditampilkan setelah login. Buat sebuah file dengan nama welcome.php, lalu simpan pada folder xampp/htdocs/login_ci/application/views/. Berikut ini tampilan dan kodenya :

Halaman Welcome - Cara Mudah Membuat Form Login dengan Codeigniter dan MySQL

<html>
<head>
  <title>Welcome Page</title>
</head>
<body>
  <h1>Selamat datang <?php echo $this->session->userdata('nama'); ?></h1>
  <h4>Anda berhasil login ke dalam aplikasi. Halaman ini hanya bisa diakses setelah login.</h4>

  <a href="<?php echo base_url('index.php/page/thanks') ?>">Thanks Page</a> |
  <a href="<?php echo base_url('index.php/auth/logout') ?>">Logout</a>
</body>
</html>

$this->session->userdata(‘nama‘)
Kode diatas berfungsi untuk memanggil session dengan nama nama yang dibuat pada controller auth fungsi login. Struktur dasar kodenya adalah $this->session->userdata(‘nama_session‘).


STEP 10 – BUAT VIEW THANKS
Selanjutnya, kita akan membuat tampilan selamat datang yang akan ditampilkan setelah login. Buat sebuah file dengan nama thanks.php, lalu simpan pada folder xampp/htdocs/login_ci/application/views/. Berikut ini tampilan dan kodenya :

Halaman Thanks - Cara Mudah Membuat Form Login dengan Codeigniter dan MySQL

<html>
<head>
  <title>Welcome Page</title>
</head>
<body>
  <h1>Terimakasih <?php echo $this->session->userdata('nama'); ?></h1>
  <h4>Ini adalah halaman thanks yang hanya bisa di akses setelah login</h4>

  <a href="<?php echo base_url('index.php/page/welcome') ?>">Welcome Page</a> |
  <a href="<?php echo base_url('index.php/auth/logout') ?>">Logout</a>
</body>
</html>

Mungkin sekian untuk catatan kali ini. Semoga bisa bermanfaat. Jika ada yang kurang dipahami, langsung tanyakan pada form komentar dibawah ini. Jangan lupa LIKE dan SHARE nya, Terimakasih banyak.

Happy Coding ^_^


SOURCE CODE
Untuk mengunduh source code nya, klik link berikut ini : Download.


SUMBER & REFERENSI
Dokumentasi Codeigniter : https://www.codeigniter.com/user_guide
Cara mudah membuat form login dengan codeigniter dan mysql, tutorial lengkap membuat form login dengan codeigniter dan mysql, tutorial step by step membuat form login dengan codeigniter dan MySQL

Login Codeigniter

(Total : 33,827 viewers, 1 viewers today)
form-login-dengan-codeigniter-mysql

ABOUT THE AUTHOR

Interested in android programming, long time focused on web development. Visit My Profile Site at www.rizaldimaulidia.com

POST YOUR COMMENTS

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

Name *

Email *

Website

40 Comments

  1. A Junaidi

    Sangat menarik, sampai mumet, dan menyegarkan, sampe detail, terima kasih banyak mas. Sehat terus mas, semoga keluar tutorial untuk menampilkan data yang lainnya, juga print ke pdf.

  2. alex marin

    Error Number: 1146

    Table ‘uher_11170516.user’ doesn’t exist

    SELECT * FROM `user` WHERE `username` = ‘siska’

    Filename: C:/xampp/htdocs/uher/system/database/DB_driver.php

    Line Number: 691

    ini kenapa ya?

  3. roronoa zoro

    makasih banyak mas, aku baru belajar ci, cari2 di tempat yg lain, masih bingung make ginian, yg ini detail banget mas, sukses terus mas

  4. Ani mulyani

    Terima kasih banyak untuk tutorialnya, sangat mudah diikuti oleh pemula spt saya heheh. Saya perlu belajar lagi setting password md5 karna salah terus passnya. Tapi ketika saya hapus md5 pada coding di function login alhamdulillah bisa

    • Sama-sama, senang bisa membantu 😀
      Pastikan tipe data pada tabel di databasenya varchar(50). lalu pastikan ketika create/update data pengguna, sebelum di insert, di ubah dulu passwordnya jadi ke md5.

  5. ihsanfadliansah

    Mantep Gan.
    Makasih

  6. TheTheThe

    bang, gmna caranya klo gk bisa akses alamat base_url(‘index.php/page/welcome’) sebelum ada login

    • sudah mengikuti tutorial ini sampai akhir? tutorial ini memang dibuat seperti itu. page welcome hanya bisa di akses setelah login.

  7. Ridwan Jati Prasetyo

    Tutorial ini tidak work di versi CI 3.1.11

  8. Ahmad Riady Sangkala

    Access forbidden!
    You don’t have permission to access the requested object. It is either read-protected or not readable by the server.

    If you think this is a server error, please contact the webmaster.

    Error 403
    localhost
    Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.1

    kalo kek gini d halaman login kayak mana ya kak?

  9. Ahmad Riady Sangkala

    An uncaught Exception was encountered
    Type: ParseError

    Message: syntax error, unexpected end of file, expecting function (T_FUNCTION) or const (T_CONST)

    Filename: C:\xampp\htdocs\database_web\adminlte_codeigniter\application\models\UserModel.php

    Line Number: 10

    Backtrace:

    File: C:\xampp\htdocs\database_web\adminlte_codeigniter\application\controllers\auth.php
    Line: 8
    Function: model

    File: C:\xampp\htdocs\database_web\adminlte_codeigniter\index.php
    Line: 315
    Function: require_once

    kalo gini kenapa ya mohon penjelasannya

    • syntax error, unexpected end of file
      error ini biasanya terjadi karena ada kurung awal if atau looping yang belum di tutup, coba cek coding sebelum Line 10 pada file application\models\UserModel.php

  10. safii maarif

    Gan kok Saya waktu sudah isi halaman login, yang muncul malah “Object Not Found”
    Kok gitu ya gan?mohon bantuannya gan

  11. Ibnu Maliki

    Kok ga running ya

  12. Rheza Chandra Kurniawan

    Mas, kok tetep saja sudah di enkripsi MD5 tapi password nya masih tetep sering salah??

  13. m syukur

    terimakasih tutorialnya

  14. eko suranta

    bang ini punya saya kok langsung ke tampilan welcome ya??

    harus nya kan ke halaman login dulu

  15. uwichannn

    inii belum ada akses loginnya ya gan?

  16. farawilaa

    kak di program saya kok selalu salah password ya, padahal udah sama.

      • irfan suhendra

        kenapa ya password selalu salah, mohon bantuan nya

        • isi password di databasenya apakah sudah di encrypt md5?
          soalnya kebanyakan yg bertanya gini karena isi passwordnya ga di encrypt md5

  17. Fachri Eka Putra

    Terima kasih banyak atas tutorialnya min 🙏🙏

    btw klo mau nambahin dialog JS setelah logout ditaruh dimana ya?

NOTE ARCHIVES