Hallo bosan semuanya,blogger amatiran ini akan membuat tutorial bagaimana cara membuat simple login dengan menggunakan framework codeigniter , langsung saja
Bahan - bahan yang di perlukan :
- xampp (sesuai selera boleh wamp,dll)
- text editor (saya pake sublime text)
- browser (the best performance menggunakan chrome/bebas)
- framework codeiniternya
Langsung saja ke tutorialnya :
- Pertama download bahan-bahan diatas
- Install bahan-bahan
- Nyalakan xampp
- Membuat folder (latihan-ci)
- Ekstrak file codeigiter nya ke htdocs (C:\xampp\htdocs atau sesuaikan dengan lokasi instalan xampp)
- Buka text editor , dan buka folder (C:\xampp\htdocs\latihan-ci atau sesuaikan)
- Persiapan selanjutnya membuat database dengan nama " hanyabosan " dan buat table dengan nama " tbl_pengguna " yang berisi 4 column (id,pengguna,kata_sandi,hak_akses) lebih cepatnya para bosan boleh import sql berikut ini :
-- phpMyAdmin SQL Dump
-- version 4.8.3
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Mar 31, 2019 at 12:39 PM
-- Server version: 10.1.36-MariaDB
-- PHP Version: 5.6.38
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `hanyabosan`
--
-- --------------------------------------------------------
--
-- Table structure for table `tbl_pengguna`
--
CREATE TABLE `tbl_pengguna` (
`id` int(11) NOT NULL,
`pengguna` varchar(30) NOT NULL,
`kata_sandi` varchar(64) NOT NULL,
`hak_akses` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tbl_pengguna`
--
INSERT INTO `tbl_pengguna` (`id`, `pengguna`, `kata_sandi`, `hak_akses`) VALUES
(1, 'admin', 'd033e22ae348aeb5660fc2140aec35850c4da997', 'Admin'),
(2, 'member', '6467baa3b187373e3931422e2a8ef22f3e447d77', 'Member');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tbl_pengguna`
--
ALTER TABLE `tbl_pengguna`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tbl_pengguna`
--
ALTER TABLE `tbl_pengguna`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-- version 4.8.3
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Mar 31, 2019 at 12:39 PM
-- Server version: 10.1.36-MariaDB
-- PHP Version: 5.6.38
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `hanyabosan`
--
-- --------------------------------------------------------
--
-- Table structure for table `tbl_pengguna`
--
CREATE TABLE `tbl_pengguna` (
`id` int(11) NOT NULL,
`pengguna` varchar(30) NOT NULL,
`kata_sandi` varchar(64) NOT NULL,
`hak_akses` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tbl_pengguna`
--
INSERT INTO `tbl_pengguna` (`id`, `pengguna`, `kata_sandi`, `hak_akses`) VALUES
(1, 'admin', 'd033e22ae348aeb5660fc2140aec35850c4da997', 'Admin'),
(2, 'member', '6467baa3b187373e3931422e2a8ef22f3e447d77', 'Member');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tbl_pengguna`
--
ALTER TABLE `tbl_pengguna`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tbl_pengguna`
--
ALTER TABLE `tbl_pengguna`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Disini kita menggunakan sha1 untuk kata_sandinya , agar lebih aman , untuk isi data nya :
- pengguna : admin , kata sandi admin
- pengguna : member , kata sandi : member
Langkah selanjutnya :
- aktifkan library form_validation,session,database,simple_login dan juga helper di application/config/autoload.php
- Hubungkan codeigniter dengan mySql konfigurasi di application/config/database.php (sesuaikan konfigurasi kalian)
- Membuat controller form login di application/controllers/ (di baguskan untuk nama file di controllers diawali dengan Upper Case / Huruf besar) dengan nama Masuk.php
<?php defined('BASEPATH') OR exit('Tidak ada akses skrip langsung diizinkan');
class Masuk extends CI_Controller{
public function index(){
$validasi = $this->form_validation;
$validasi->set_rules('pengguna', 'Pengguna', 'required',
array('required' => 'Pengguna Harus Di isi !'));
$validasi->set_rules('kata_sandi', 'Kata Sandi', 'required',
array('required' => 'Kata Sandi Harus Di isi !'));
$pengguna = $this->input->post('pengguna');
$kata_sandi = $this->input->post('kata_sandi');
if($validasi->run()){
$this->simple_login->masuk($pengguna, $kata_sandi);
}
$data = array('title' => 'Halaman Login',
'judul' => 'Selamat Datang');
$this->load->view('masuk' , $data);
}
public function keluar(){
$this->simple_login->keluar();
}
}
class Masuk extends CI_Controller{
public function index(){
$validasi = $this->form_validation;
$validasi->set_rules('pengguna', 'Pengguna', 'required',
array('required' => 'Pengguna Harus Di isi !'));
$validasi->set_rules('kata_sandi', 'Kata Sandi', 'required',
array('required' => 'Kata Sandi Harus Di isi !'));
$pengguna = $this->input->post('pengguna');
$kata_sandi = $this->input->post('kata_sandi');
if($validasi->run()){
$this->simple_login->masuk($pengguna, $kata_sandi);
}
$data = array('title' => 'Halaman Login',
'judul' => 'Selamat Datang');
$this->load->view('masuk' , $data);
}
public function keluar(){
$this->simple_login->keluar();
}
}
- Membuat views form login di application/views/ (di baguskan untuk nama file di views diawali dengan Lower Case / Huruf kecil) dengan nama masuk.php
<!DOCTYPE html>
<html>
<head>
<title><?=$title ?></title>
</head>
<body>
<h1><?=$judul ?></h1>
<form action="<?php echo base_url('masuk') ?>" method="POST">
<?php
echo validation_errors();
if($this->session->flashdata('pesan')){
echo $this->session->flashdata('pesan');
}
?>
<table>
<tr>
<td>Pengunna</td>
<td><input type="text" name="pengguna"></td>
</tr>
<tr>
<td>Kata Sandi</td>
<td><input type="password" name="kata_sandi"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="MASUK"></td>
</tr>
</table>
</form>
</form>
</body>
</html>
<html>
<head>
<title><?=$title ?></title>
</head>
<body>
<h1><?=$judul ?></h1>
<form action="<?php echo base_url('masuk') ?>" method="POST">
<?php
echo validation_errors();
if($this->session->flashdata('pesan')){
echo $this->session->flashdata('pesan');
}
?>
<table>
<tr>
<td>Pengunna</td>
<td><input type="text" name="pengguna"></td>
</tr>
<tr>
<td>Kata Sandi</td>
<td><input type="password" name="kata_sandi"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="MASUK"></td>
</tr>
</table>
</form>
</form>
</body>
</html>
- oh iyah jangan lupa arahkan halaman awal controllers Masuk.php di application/config/routes.php
<?php defined('BASEPATH') OR exit('Tidak ada akses skrip langsung diizinkan');
class Simple_login{
var $CI = NULL;
public function __construct(){
$this->CI =& get_instance();
}
public function masuk($pengguna, $kata_sandi){
$kuery = $this->CI->db->get_where('tbl_pengguna', array(
'pengguna' => $pengguna,
'kata_sandi' => sha1($kata_sandi)
));
if($kuery->num_rows() == 1){
$baris = $this->CI->db->query('SELECT * FROM tbl_pengguna WHERE pengguna = "'.$pengguna.'"');
$admin = $baris->row();
$id = $admin->id;
$pengguna = $admin->pengguna;
$hak_akses = $admin->hak_akses;
$this->CI->session->set_userdata('id', $id);
$this->CI->session->set_userdata('pengguna',$pengguna);
$this->CI->session->set_userdata('hak_akses',$hak_akses);
redirect(base_url('beranda'));
}else{
$this->CI->session->set_flashdata('pesan','Pengguna/Kata Sandi Salah !');
redirect(base_url().'masuk');
}
return false;
}
public function cek_login(){
if($this->CI->session->userdata('pengguna') == '' && $this->CI->session->userdata('id')==''){
$this->CI->session->set_flashdata('pesan','Silahkan Login Terlebih Dahulu !');
redirect(base_url('masuk'));
}
}
public function keluar(){
$this->CI->session->unset_userdata('id');
$this->CI->session->unset_userdata('pengguna');
$this->CI->session->unset_userdata('hak_akses');
$this->CI->session->set_flashdata('pesan','Anda Berhasil Logout');
redirect(base_url('masuk'));
}
}
class Simple_login{
var $CI = NULL;
public function __construct(){
$this->CI =& get_instance();
}
public function masuk($pengguna, $kata_sandi){
$kuery = $this->CI->db->get_where('tbl_pengguna', array(
'pengguna' => $pengguna,
'kata_sandi' => sha1($kata_sandi)
));
if($kuery->num_rows() == 1){
$baris = $this->CI->db->query('SELECT * FROM tbl_pengguna WHERE pengguna = "'.$pengguna.'"');
$admin = $baris->row();
$id = $admin->id;
$pengguna = $admin->pengguna;
$hak_akses = $admin->hak_akses;
$this->CI->session->set_userdata('id', $id);
$this->CI->session->set_userdata('pengguna',$pengguna);
$this->CI->session->set_userdata('hak_akses',$hak_akses);
redirect(base_url('beranda'));
}else{
$this->CI->session->set_flashdata('pesan','Pengguna/Kata Sandi Salah !');
redirect(base_url().'masuk');
}
return false;
}
public function cek_login(){
if($this->CI->session->userdata('pengguna') == '' && $this->CI->session->userdata('id')==''){
$this->CI->session->set_flashdata('pesan','Silahkan Login Terlebih Dahulu !');
redirect(base_url('masuk'));
}
}
public function keluar(){
$this->CI->session->unset_userdata('id');
$this->CI->session->unset_userdata('pengguna');
$this->CI->session->unset_userdata('hak_akses');
$this->CI->session->set_flashdata('pesan','Anda Berhasil Logout');
redirect(base_url('masuk'));
}
}
- Membuat lagi controller di application/controllers/ dengan nama Beranda.php
<?php defined('BASEPATH') OR exit('Tidak ada akses skrip langsung diizinkan');
class Beranda extends CI_Controller{
function __construct(){
parent:: __construct();
}
public function index(){
$data = array('title' => 'Halaman Beranda',
'judul' => 'Selamat Datang');
$this->load->view('beranda', $data);
}
}
class Beranda extends CI_Controller{
function __construct(){
parent:: __construct();
}
public function index(){
$data = array('title' => 'Halaman Beranda',
'judul' => 'Selamat Datang');
$this->load->view('beranda', $data);
}
}
- Membuat lagi view di application/views/ dengan nama beranda.php
<?php $this->simple_login->cek_login(); ?>
<!DOCTYPE html>
<html>
<head>
<title><?=$title?></title>
</head>
<body>
<h1><?=$judul?></h1>
<?php if($this->session->userdata('hak_akses')== 'Admin'){ ?>
<h1>Anda Admin</h1>
<?php }elseif($this->session->userdata('hak_akses') == 'Member'){ ?>
<h1>Anda Member</h1>
<?php } ?>
<a href="<?=base_url('masuk/keluar') ?>">Keluar</a>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title><?=$title?></title>
</head>
<body>
<h1><?=$judul?></h1>
<?php if($this->session->userdata('hak_akses')== 'Admin'){ ?>
<h1>Anda Admin</h1>
<?php }elseif($this->session->userdata('hak_akses') == 'Member'){ ?>
<h1>Anda Member</h1>
<?php } ?>
<a href="<?=base_url('masuk/keluar') ?>">Keluar</a>
</body>
</html>
*Untuk multiusernya menggunakan kondisi $this->session->userdata('hak_akses')== 'Admin' (untuk admin) dan $this->session->userdata('hak_akses')== 'Member' (untuk member)
- jika sudah maka coba langsungg . ini halaman login nya :
- Halaman member ketika sudah masuk
- Tampilan sesudah logout di kembalikan ke halaman login dan memunculkan validasi
Membuat Simple Login Multiuser + validasi dengan Codeigniter
By Hanyabosan
Langganan:
Postingan (Atom)