Pages

Selasa, 11 Maret 2014

Membuat Login Dengan CodeIgniter

CARA MEMBUAT LOGIN SEDERHANA MENGGUNAKAN CODEIGNITER

PESIAPAN
Pertama kalian harus mempunyai zip codeigniter disini saya menggunakan codeigniter 2.1.4.zip
extract file di xampp/htdocs/
Kedua kalian mempunyai web server disini saya menggunakan xampp

LANGKAH PERTAMA MEMBUAT DATABASE
buat terlebih dahulu databasenya di phpmyadmin disini saya mencontohkan membuat database dengan menggunakan nama db_user lalu isikan table dengan struktur sebagai berikut.

 CREATE TABLE `users` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`username` varchar(10) NOT NULL,
`password` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Lalu tambahkan data pada tabel users dengan struktur data sebagai berikut.
   insert into users (username, password) values ('admin', MD5('nama'));

Mengkonfigurasi database di codeigniter
Update file application/config/database.php di folder codeigniter anda , lalu edit baris ini.

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'db_user';
lalu disave.


 Default Controller 
 Kita akan memberi tahu Codeigniter untuk mengarahkan halaman kita ke halaman login , update file  application/config/routes.php di folder codeigniter anda dengan nama controller anda . disini saya akan  membuat controller dengan nama login.
$route['default_controller'] = "login";
lalu disave.

 Default Libraries 
 Rubah codenya di dalam file application/config/autoload.php anda dapat mengkonfigurasi library default yang  akan anda pakai  di semua controller anda , untuk saat ini , saya akan menggunakan database dan session library , yang  digunakan untuk meng-handle session user dan juga url helper untuk pemrosesan linknya.
$autoload['libraries'] = array('database','session');
$autoload['helper'] = array('url');
lalu disave.

 Encryption Key
Saat bila anda akan menggunakan library session, anda harus set encryption key pada file application/config/config.php.
$config['encryption_key'] = 'REALLY_LONG_NUMBER';
lalu disave

MEMBUAT SCRIPTNYA
Langkah Pertama buat user
<?php
Class User extends CI_Model
{
function login($username, $password)
{
  $this -> db -> select('id, username, password');
  $this -> db -> from('users');
  $this -> db -> where('username', $username);
  $this -> db -> where('password', MD5($password));
  $this -> db -> limit(1);
  $query = $this -> db -> get();
  if($query -> num_rows() == 1)
   {
    return $query->result();
  }
  else
  {
    return false;
  }
}
}
?>
lalu simpan di models dengan nama user.php(application/models/user.php)

Langkah  Kedua Membuat Login 
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller {
function __construct()
{
  parent::__construct();
}
function index()
{
  if($this->session->userdata('logged_in'))
  {
    redirect('home', 'refresh');
  }
  else
  {
     $this->load->helper(array('form'));
     $this->load->view('login_view');
}
}
}
?>
lalu simpan di controller dengan nama login.php (application/controllers/login.php).

Langkah Ketiga memebuat validasi terhadap database
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class VerifyLogin extends CI_Controller {
 function __construct()
 {
   parent::__construct();
   $this->load->model('user','',TRUE);
 }
 function index()
 {
   $this->load->library('form_validation');
   $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
   $this->form_validation->set_rules('password', 'Password',
                'trim|required|xss_clean|callback_check_database');
   if($this->form_validation->run() == FALSE)
   {
     $this->load->view('login_view');
   }
   else
   {
     redirect('home', 'refresh');
   }
 }
 function check_database($password)
 {
   $username = $this->input->post('username');
   $result = $this->user->login($username, $password);
   if($result)
   {
     $sess_array = array();
     foreach($result as $row)
     {
       $sess_array = array(
         'id' => $row->id,
         'username' => $row->username
       );
       $this->session->set_userdata('logged_in', $sess_array);
     }
     return TRUE;
   }
   else
   {
     $this->form_validation->set_message('check_database', ' username and password not found!');
     return false;
   }
 }
}
?>
simpan di controllers dengan nama akulogin.php (application/controllers/akulogin.php).

Langkah  Keempat membuat halaman untuk user saja
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
session_start();
class Home extends CI_Controller {
 function __construct()
 {
   parent::__construct();
 }
 function index()
 {
   if($this->session->userdata('logged_in'))
   {
     $session_data = $this->session->userdata('logged_in');
     $data['username'] = $session_data['username'];
     $this->load->view('home_view', $data);
}
   else
   {
     redirect('login', 'refresh');
   }
 }
 function logout()
 {
   $this->session->unset_userdata('logged_in');
   session_destroy();
   redirect('home', 'refresh');
 }
}
?>
simpan di controllers dengan nama home.php (application/controllers/home.php).

Langkah Kelima membuat Tampilan Login 
<html>
<head>
  <title>Simple Login menggunakan CodeIgniter</title>
</head>
<body>
  <h1>Simple Login menggunakan CodeIgniter</h1>
  <?php echo validation_errors(); ?>
  <?php echo form_open('akulogin'); ?>
<label for="username">Username:</label>
    <input type="text" size="20" id="username" name="username"/>
    <label for="password">Password:</label>
    <input type="password" size="20" id="passowrd" name="password"/>
    <input type="submit" value="Login"/>
  </form>
</body>
</html>
simpan di views dengan nama login_views.php(application/views/login_view.php).

Langkah  Keenam membuat tampilan halama
<html>
  <head>
   <title>Simple Login menggunakan CodeIgniter - Private Area</title>
 </head>
 <body>
   <h1>Home</h1>
   <h2>Selamat datang<?php echo $username; ?>!</h2>
   <a href="home/logout">Logout</a>
 </body>
</html>
simpan di view dengan nama home_view.php (application/views/home_view.php)
sekian semoga sobat sukses menjalankannya selamat mencoba good luck!


1 komentar: