Beranda

Senin, 18 Februari 2013

Tutorial membuat form login dengan PHP framework codeigniter

Pada tutorial sebelumnya, saya sudah memperkenalkan sedikit tentang MVC pada PHP framework codeigniter. nah, sekarang saya mau coba memperkenalkan sedikit tentang cara membuat Form login dengan menggunakan PHP framework codeigniter. mungkin teman-teman sudah banyak yang tahu tentang bagaimana cara membuat form login dengan PHP framework codeigniter, tapi untuk teman-teman yang belum tahu atau bahkan masih bingung bagai mana cara membuat form login dengan PHP framework codeigniter silahkan di lihat coding nya di bawah.

  1. Pertama buatlah database myweb_db.
    CREATE DATABASE myweb_db
     
  2. Buat table user pada database myweb_db
    CREATE TABLE `m_user` (
      `usr_id` int(11) NOT NULL auto_increment,
      `usr_nama` varchar(75) NOT NULL default 'anymous',
      `usr_name` varchar(20) NOT NULL default 'anymous',
      `usr_pwd` varchar(32) NOT NULL default '',
      `usr_isactive` tinyint(1) NOT NULL default '1',
      PRIMARY KEY  (`usr_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
     
  3. Insert data pada table user
    INSERT INTO m_user VALUES('','Administrator','Admin','Admin','1')
     
  4. Ubah database.php pada application/config
    $active_group = 'default';
    $active_record = TRUE;
    
    $db['default']['hostname'] = 'localhost';
    //username mysql anda
    $db['default']['username'] = 'root';
    //password mysql anda
    $db['default']['password'] = '';
    //database anda
    $db['default']['database'] = 'myweb_db';
    $db['default']['dbdriver'] = 'mysql';
    $db['default']['dbprefix'] = '';
    $db['default']['pconnect'] = TRUE;
    $db['default']['db_debug'] = TRUE;
    $db['default']['cache_on'] = FALSE;
    $db['default']['cachedir'] = '';
    $db['default']['char_set'] = 'utf8';
    $db['default']['dbcollat'] = 'utf8_general_ci';
    $db['default']['swap_pre'] = '';
    $db['default']['autoinit'] = TRUE;
    $db['default']['stricton'] = FALSE;
     
  5. Setting autoload.php pada application/config menjadi
    /*
    | -------------------------------------------------------------------
    |  Auto-load Libraries
    | -------------------------------------------------------------------
    | These are the classes located in the system/libraries folder
    | or in your application/libraries folder.
    |
    | Prototype:
    |
    | $autoload['libraries'] = array('database', 'session', 'xmlrpc');
    */
    
    $autoload['libraries'] = array('database','session');
    
    
    /*
    | -------------------------------------------------------------------
    |  Auto-load Helper Files
    | -------------------------------------------------------------------
    | Prototype:
    |
    | $autoload['helper'] = array('url', 'file');
    */
    
    $autoload['helper'] = array('url','form');
    
    
  6. Buat controller login dengan nama login.php pada application/controllers, yang berisikan:
    <?php
     
     class login extends CI_Controller
     {
     
      function __construct()
      {
       //membuat construktor;
       parent::__construct();
       //meload helper form dan url
       $this->load->helper(array('form','url'));
       //meload model login
       $this->load->model('m_login');
      }
      
      function index()
      {
       //membuat variable judul web yang ditampilkan sebagai judul browser
       $data['title'] = 'MYWEB';
       //membuat nama header yang ditampilkan pd form login
       $data['loginheader'] = 'Login';
       //membuat string gagal dimana nantinya digunakan untuk validasi
       $data['gagal'] = '';
       //meload view login
       $this->load->view('v_login',$data);
      }
      
      function cekuser()
      {
       //memanggil model login
       $data['query'] = $this->m_login->cekdb();
       //mengecek isi dari model login
       if($data['query']==null)
       {
        return false;
       }
       else
       {
        return $data['query'];
       }
      }
      
      function proseslogin()
      {
       //membuat variable judul web yang ditampilkan sebagai judul browser
       $data['title'] = 'MYWEB';
       //membuat nama header yang ditampilkan pd form login
       $data['loginheader'] = 'Login';
       //megecek isi dari fungsi cekuser diatas
       //jika data ada maka login berhasil
       if($this->cekuser()==true)
       {
        //membuat variable logo yang nanti ditampilkan pd view
        $data['logo'] = 'MYWEB';
        //membuat variable account yang nanti ditampilkan pd view
        $data['username'] = 'Account: '.$this->input->post('username');
        //menyimpan data pada array
        $newdata = array
        (
         'username'=>$data['username'],
         'islogin'=>true
        );
        //membuat sesion
        $this->session->set_userdata($newdata);
        //menampilkan view home
        $this->load->view('v_home',$data);
       }
       else
       {
        //membuat validasi gagal yang ditampilkan pada form login
        $data['gagal'] = '<div id="notification">Maaf, Proses Login Gagal!<BR>1. Username atau Password anda salah.<BR>2. Coba periksa kembali keadaan <span class="red">Caps lock</span>.</div>';
        //memanggil view login
        $this->load->view('v_login',$data);
       }
      }
      
      function logout()
      {
       //menghapus sesion
       $this->session->sess_destroy();
       //kembali ke form login
       redirect('login/index');  
      }
     
     }
    ?>
    
    
  7. Selanjutnya membuat model login, dimana pada model ini dikhususkan untuk koneksi pada database. simpan dengan nama m_login.php pada application/models
    <?php
     class m_login extends CI_Model
     {
      public function cekdb()
      {
       //mengambil data dari form login username
       $username = $this->input->post('username');
       //mengambil data dari form login password
       $password = $this->input->post('password');
       
       //sql select usr_id
       $this->db->select('usr_id');
       //sql where usr_name = username yang diambil dari form login
       $this->db->where('usr_name', $username);
       //sql where usr_pwd = password yang diambil dari form login
       $this->db->where('usr_pwd', md5($password));
       //sql where usr_isactive = aktif
       $this->db->where('usr_isactive','1');
       //sql tabel yang dipilih m_user
       $query = $this->db->get('m_user');
       //perulangan nilai array yang berisi data dari query sql diatas
       foreach($query->result() as $row)
       {
        return $row->usr_id;
       }
      }
       
     }
    
    ?>
     
    //Untuk penjelasan tentang perulangan nilai array, akan saya jelaskan pada tutorial "Fungsi Foreach" selanjutnya  
  8. Membuat view login, dimana view ini adalah merupakan hasil yang akan dilihat oleh user. disimpan dengan nama v_login.php pada application/views.
    <html>
     <head>
      <!-- menampilkan judul pada browser -->
      <title><?=$title?></title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <link rel="stylesheet" type="text/css" media="all" href="<?php echo base_url();?>/login.css" />  
     </head>
     <body>
      <?php echo form_open("login/proseslogin"); ?>
      <div id="wrap">
       <div id="maincontent">
        <!-- menampilkan header login -->
        <div id="header"><?=$loginheader?></div>
        <div id="content">
          <!-- menampilkan validasi login -->
          <?=$gagal?>
          <div id="label">Usernama :</div>
          <div id="form"><input type="text" name="username"></div>
          <div id="label">Password :</div>
          <div id="form"><input type="password" name="password"></div>
          <div id="label">&nbsp;</div>
          <div id="form"><input type="submit" value="Login"/></div>
        </div>
        <div id="footer"></div>
       </div>
      </div>
      </form>
     </body>
    </html>
    
    
  9. Buat view home.php pada application/views. Dimana nanti jika proses login sukses, maka akan menampilkan home.php
    <html>
     <head>
      <!-- menampilkan judul pada browser -->
      <title><?=$title?></title>
      <link rel="stylesheet" type="text/css" media="all" href="<?php echo base_url();?>/css/home.css" />  
     </head>
     <body  topmargin="0" leftmargin="0">
      <div id="wrap">
       <div id="maincontent">
        <div id="header">
         <!-- menampilkan judul logo di header -->
         <div class="logo"><?=$logo?></div>
         <!-- menampilkan account name di header -->
         <div class="account"><?=$username?>, <a href="<?php echo site_url(); ?>/login/logout">Logout</a></div>
         <div id="clear"></div>
        </div>
       </div>
      </div>
     </body>
    </html>
     
  10. Membuat css login, untuk memperindah tampilan form, disimpan dengan nama login.css pada root folder CodeIgniter xampp/htdocs/CodeIgniter/
    /* 
    Theme Name: Away Login Theme 
    Description: Theme #1
    Author: Darmawan
    Author URI: http://darmawantm.blogspot.com 
    Version: 1.0 
    */  
    body {  
     font-family: tahoma, "Bitstream Charter", serif;  
     font-size:12px;
     overflow:scroll;
    } 
    #wrap {  
     border:solid 2px #999999; 
     width:270px;  
     margin:0 auto;  
     margin-top:200px;
     padding:2px;  
     background:#9999CC;  
    }  
    #maincontent {  
     border:solid 2px #fff; 
     background:#9999CC; 
     padding: 5px;
    }  
    #header{
     padding:5px;
     font-weight:bold;
     font-size:14px;
    }
    #content{
     border:solid 2px #fff; 
     background:#fff; 
     padding: 5px;
    
    }
    #notification{
     background:#FFFF99;
     border:solid 1px #FFCC00; 
     padding:3px;
    }
    #label{
     float:left;
     width:70px;
      margin:5px;
    }
    #form{
     margin:5px;
    }
    .red{
     color:#CC0000;
    }
    
    
  11. Setting routes.php pada application/config, menjadi
    | -------------------------------------------------------------------------
    | RESERVED ROUTES
    | -------------------------------------------------------------------------
    |
    | There area two reserved routes:
    |
    | $route['default_controller'] = 'welcome';
    |
    | This route indicates which controller class should be loaded if the
    | URI contains no data. In the above example, the "welcome" class
    | would be loaded.
    |
    | $route['404_override'] = 'errors/page_missing';
    |
    | This route will tell the Router what URI segments to use if those provided
    | in the URL cannot be matched to a valid route.
    |
    */
    
    $route['default_controller'] = "login";
    $route['404_override'] = "";
    
    $route['scaffolding_trigger'] = "post";
     
  12. Jalankan dengan membuka http://localhost/myweb
Selesai. Silahkan tunggu turotial selanjutnya.

26 komentar:

  1. An Error Was Encountered

    In order to use the Session class you are required to set an encryption key in your config file

    itu apanya yang salah ya?

    BalasHapus
    Balasan
    1. yups, saya akan coba menjawab. ini memang sering terjadi bagi anda yg baru mendownload CodeIgniter Update-an terbaru.

      to the point..
      Session biasanya akan berjalan secara global dengan setiap buka halaman, sehingga class Session baik harus diinisialisasi di construction Controller Anda, atau dapat otomatis dimuat oleh sistem. Untuk sebagian besar calss Session akan berjalan tanpa pengawasan di Background, sehingga hanya menginisialisasi class akan membaca, membuat, dan Session pembaruan.

      Untuk menginisialisasi class session manual dalam constructor controller Anda, gunakan
      $this->load->library('session');

      Setelah dimuat, objek library Session akan tersedia menggunakan: $this->session

      atau lihat pada file: application/config/config.php

      /*
      |--------------------------------------------------------------------------
      | Encryption Key
      |--------------------------------------------------------------------------
      |
      | If you use the Encryption class or the Sessions class with encryption
      | enabled you MUST set an encryption key. See the user guide for info.
      |
      */
      $config['encryption_key'] = 'YOUR KEY';

      Note : enkripsi key sebaiknya diisi sekalian, itu berguna jika kamu menggunakan library encrypt.

      Hapus
  2. terma kasih banyak ya gan... ilmu sangat bermanfaat,

    tapi kenapa ya gan cssnya ga bisa ke baca.. ane kurang ngerti masalah base url ??? :( mohon di jelaskan ya gan ..!!

    BalasHapus
    Balasan
    1. untuk file login.css di taruh di root folder codeIgniter xampp/htdocs/(taruh disini-sesuai nama Latihan anda)/
      Note: lihat lagi postingan No.8 apakah penulisannya.
      href="<...?>/login.css" />

      untuk "base_url", base_url adalah sebuah pengaturan yang kita buat sendiri di config.php agar kita tak perlu lagi memanggil source code http://localhost/coba/index.php/... kita hanya cukup memanggil base_url nya saja (intinnya mempermudah kita gan).

      untuk pengaturannya coba anda buka file config.php, dan coba lihat penampakan yg seperti dibawah ini.

      /*
      |--------------------------------------------------------------------------
      | Base Site URL
      |--------------------------------------------------------------------------
      |
      | URL to your CodeIgniter root. Typically this will be your base URL,
      | WITH a trailing slash:
      |
      | http://example.com/
      |
      | If this is not set then CodeIgniter will guess the protocol, domain and
      | path to your installation.
      |
      */
      $config['base_url'] = 'http://localhost/coba/';


      note : jika anda menggunakan CodeIgniter versi baru jangan lupa untuk mengisi encryption key(terserah mao di isi apa aja), karna di CI versi terbaru sudah d'default-kan untuk mengisi encryption key.

      SELAMAT MENCOBA

      Hapus
  3. Sudah saya coba tutorialnya mulai awal sampe akhir, tapi saya masih nemuin error:

    A PHP Error was encountered

    Severity: Notice

    Message: Undefined property: login::$db

    Filename: core/Model.php

    Line Number: 51

    Fatal error: Call to a member function select() on a non-object in C:\xampp\htdocs\Tugas\CodeIgniter_2.1.3\application\models\m_login.php on line 12

    Gimana solusinya gan?

    BalasHapus
    Balasan
    1. coba anda lihat pada file CodeIgniter anda sndiri.

      C:\xampp\htdocs\Tugas\CodeIgniter_2.1.3\application\models\m_login.php on line 12

      semestinya anda tidak perlu menaruh folder "CodeIgniter_2.1.3" di dalam folder "Tugas", cukup hanya mengganti nama file CodeIgniter_2.1.3 menjadi Tugas tanpa harus menaruh folder Ci ke dalam folder tugas. (#disini saya mngganti nama "CodeIgniter_2.1.3" mnjadi "coba").
      jadi anda hanya perlu memanggil url :
      hhtp://localhost/tugas/index.php

      (#disini saya hanya memanggil http://localhost/coba/index.php)

      Hapus
  4. oh ya mas berarti untuk error "An Error Was Encountered

    In order to use the Session class you are required to set an encryption key in your config file"

    itu berarti bisa di tambahin di bawah

    " function __construct()
    {
    //membuat construktor;
    parent::__construct(); "
    dengan " $this->load->library('session'); " atau " $config['encryption_key'] = 'YOUR KEY'; " pada config.php ?

    lha kalo abis gitu keluar error gini mas " Fatal error: Cannot redeclare class login in C:\xampp\htdocs\loginCI\application\models\m_login.php on line 85 "

    BalasHapus
    Balasan
    1. gini mas yang error udah bisa,cuma kalo habis log in terus di log out pas di back kok gak jalan ya seisson nya ?

      Hapus
  5. Terima kasih banyak, saya sudah berhasil mencoba

    BalasHapus
  6. mas klo error seperti ini knp ya :
    The website encountered an error while retrieving http://localhost/index.php. It may be down for maintenance or configured incorrectly.
    Error code: 500

    BalasHapus
    Balasan
    1. koneksi internetnya coba dimatiin... ingat, jangan menjalankan aplikasi secara online karna anda sedang menjalankan aplikasi di host local (Localhost).
      jangan menggunakan "www". pastikan depannya http://localhost/...
      semoga sukses gan

      Hapus
  7. MAS KLO GA NGE LOGIN MALAH NGE RELOAD GMN

    BalasHapus
  8. mas, prosesogin nya langsung ke kondisi gagal, gimana y?

    BalasHapus
    Balasan
    1. baca kondisi gagal'y ada di line nomor brapa... kemudian lihat file folder yg di tunjukkan pada kondisi gagal'y... kemungkinan ada kesalan pada sintaks diline tersebut.
      selamat mencoba

      Hapus
  9. tutorial sangat membantu gan bagi pemula yang sedang belajar CI,
    saya mendapat masalah ini gan saat proses login nya, sudah di ketikan username dan password sesuai dengan database nya tapi masih tidak dapat masuk kedalam halaman home.
    mohon pencerahannya gan..

    mampir juga gan http://rosyidaja.blogspot.com/

    BalasHapus
    Balasan
    1. coba lihat sintaknya... keungkinan ada kesalahan pada $this->load->model(/...)

      Hapus
    2. krn di model password menggunakan encrypt md5 tp d struktur database tidak

      Hapus
  10. ketika login kog gk bisa validasi ya mas? padahal username dan passwordnya sudah bener. mohon pencerahannya

    BalasHapus
    Balasan
    1. coba dilihat pada sintaks validasi... kemungkinan ada kesalahan sintaks
      selamat mencoba

      Hapus
  11. kok sama, apa plagiat?

    http://gatotkacatulanglunak.wordpress.com/2012/01/22/project-belajar-codeigniter-1-login-form/

    BalasHapus
  12. request gan,,, form login framework panada...

    BalasHapus
  13. makasih banyak ilmunya. saya udh cukup bingung awalnya kenapa ga mau. ternyata udh nemu salahnya dimana setelah baca blog ini. smoga ilmunya selalu bermanfaat

    BalasHapus