Assalamualaikum Wr.Wb...
dengan diberikan nikmat dan rezeki dari Allah SWT, saya Mr.Gagaltotal666 akan
berbagi kepada anda yaitu tentang Module Sederhana Login Authentication
dan CRUD di Codeigniter 3 dengan Webserver Apache GNU/Linux.
sebelum nya saya mengasih contoh di PHP native [disini]
sekarang saya akan mengasih contoh module di framework PHP nya
yaitu yang sering digunakan banyak orang ya benar Codeigniter
oke langsung saja ikuti langkah berikut
back to text editor area....
bahan yang di siapkan yaitu :
- webserver apache/nginx, untuk di OS windows silakan download Xampp
dan Mamp maupun laragon
- PHP 7.2, 7.3, 7.4 package
- Framework Codeigniter 3.11
- Admin LTE Version 3
- Belum Server Side
sistem keamanan :
- SQL Injection, dan bypass login SQL
- XSS
- mohon maaf jika ada keretanan/vlunerability lain nya,
terutama pada saat upload gambar, jika user mentamper sebuah format .jpg
terutama pada saat upload gambar, jika user mentamper sebuah format .jpg
menyusupkan backdoor shell php dan lain-lain.
oke lanjut...
pertama download Framework codeigniter [disini]
setelah download framework nya, buat database
contoh seperti dibawah ini
$ create database login_crud_ci3;
buat table dan beserta column nya
CREATE TABLE `users` (`user_id` int NOT NULL,`username` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,`email` varchar(50) NOT NULL,`nama` varchar(255) NOT NULL,`level` varchar(10) DEFAULT NULL);CREATE TABLE `biodata` (`id_biodata` int NOT NULL,`biodata_username_users` varchar(255) NOT NULL,`jenis_kelamin` varchar(255) NOT NULL,`tempat_lahir` varchar(255) NOT NULL,`tanggal_lahir` date NOT NULL,`alamat` text NOT NULL,`agama` varchar(25) NOT NULL,`pekerjaan` varchar(255) NOT NULL,`riwayatpendidikan` varchar(255) NOT NULL,`telepon` varchar(15) NOT NULL,`photo` varchar(255) NOT NULL);
jika semua sudah, langsung saja buat controller nya
contoh controller yang saya buat
untuk admin
- Biodata_admin.php
- Biodata.php
- Page.php
- User.php
untuk operator
- Biodata.php
- Page.php
di model nya, contoh
model Login akses : Login_model.php
untuk admin
- Admin_model.php
- Biodata_model.php
- User_model.php
untuk operator
- Operator_model.php
ingat yak kalau kamu menggunakan Linux Server
membuat controller dan model di codeigniter 3 harus huruf kapital besar
contoh yang saya buat diatas, jika kecil semua itu akan menyebabkan
Case Sensitif bakal terjadi error nanti
keluar 404 not found (halam tidak ditemukan)
oke lanjut kebagian config
dibagian ini kita setting config.php, database.php, dan autoload.php,
serta route.php ini untuk pemanggilan awal nya
pertama di database.php terlebih dahulu untuk mengkoneksikan
database Mysql ke Codeigniter 3, contoh sebagai berikut
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');$active_group = 'default';$query_builder = TRUE;$db['default'] = array('dsn' => '','hostname' => '127.0.0.1','username' => 'root','password' => 'password','database' => 'login_crud_ci3','dbdriver' => 'mysqli','dbprefix' => '','pconnect' => FALSE,'db_debug' => (ENVIRONMENT !== 'production'),'cache_on' => FALSE,'cachedir' => '','char_set' => 'utf8','dbcollat' => 'utf8_general_ci','swap_pre' => '','encrypt' => FALSE,'compress' => FALSE,'stricton' => FALSE,'failover' => array(),'save_queries' => TRUE);
untuk di config.php
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");$config['base_url'] .= "://" . $_SERVER['HTTP_HOST'];$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);
selebih nya default..., perintah diatas untuk tidak mengatur lagi url site
contoh misalnya kamu sudah mempunyai domain
website.com/app, masa harus ganti url config lagi ribet
oke lanjut di bagian autoload.php
untuk libraries nya saya menggunakan seperlu nya
contoh sebagai berikut
$autoload['libraries'] = array('database', 'session','encryption','pagination','form_validation');
kemudian dibagian route.php
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');$route['default_controller'] = 'login';$route['404_override'] = '';$route['translate_uri_dashes'] = FALSE;
nah dibagian ini terutama default controller itu untuk awal mulai nya
bisa di bilang tampilan atau frontend yang mau di tampilkan awal
dibagian 404_override kamu bisa custom sesuai buat 404 kamu di view
oke lanjut...
nah karena saya default controller nya login
kita buat isi controller login nya, contoh seperti ini
<?phpclass Login extends CI_Controller{function __construct(){parent::__construct();$this->load->model('login_model');}function index(){// login multi user hanya 2 user : admin dan operator, jika kamu ingin menambahkannya tinggal lanjutkan logika elseif nyaif($this->session->userdata('username') AND $this->session->userdata('level') === 'admin'){redirect('admin/page');} elseif($this->session->userdata('username') AND $this->session->userdata('level') === 'operator'){redirect('operator/page');}$this->load->view('login');}function auth(){$username = htmlspecialchars($this->input->post('username', true), ENT_QUOTES);// hashing bisa kamu ubah bisa bycrypt, sha1, base64 dll, soalnya saya buat ini hanya untuk kamu yang sedang belajar$password = htmlspecialchars(md5($this->input->post('password', true)), ENT_QUOTES);$validate = $this->login_model->validate($username,$password);if($validate->num_rows() > 0){$data = $validate->row_array();$name = $data['nama_lengkap'];$username = $data['username'];$level = $data['level'];$sesdata = array('nama' => $name,'username' => $username,'level' => $level,'logged_in' => TRUE);$this->session->set_userdata($sesdata);// access login for adminif($level === 'admin'){redirect('admin/page');// access login for operator}elseif($level === 'operator'){redirect('operator/page');// access login salah}}else{echo $this->session->set_flashdata('msg','<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><h4> <i class="icon fa fa-times-circle"></i> Login Failed!</h4>Username dan password salah senpai T_T...</div>');redirect('login');}}function logout(){$this->session->sess_destroy();redirect('login');}}
oke lanjut membuat model untuk Login_model.php
contoh seperti ini
<?phpclass Login_model extends CI_Model{function validate($username,$password){$this->db->where('username',$username);$this->db->where('password',$password);$result = $this->db->get('users',1);return $result;}}
di User_model.php
<?phpclass User_model extends CI_Model{public function getAllUsers(){$query = $this->db->get('users');return $query->result_array();}public function jumlahuser(){$b = $this->db->query('select * from users');$hitung_b = $b->num_rows();return $hitung_b;}public function tambahUsers(){$data = ["username" => $this->input->post('username', true),"nama" => $this->input->post('nama', true),"email" => $this->input->post('email', true),"password" => md5($this->input->post('password')),"level" => $this->input->post('level', true)];$data1 = ["biodata_username_users" => $this->input->post('username', true),"photo" => $this->input->post('photo', true)];$this->db->insert('users', $data);$this->db->insert('biodata', $data1);}public function hapusUser($id){$this->db->where('username', $id);$this->db->delete('users');$this->db->where('biodata_username_users', $id);$this->db->delete('biodata');}public function getUsersById($id){return $this->db->get_where('users', ['user_id' => $id])->row_array();}public function ubahUser($id){$data = ["username" => $this->input->post('username', true),"nama" => $this->input->post('nama', true),"email" => $this->input->post('email', true),"level" => $this->input->post('level', true)];$this->db->where('user_id', $this->input->post('user_id'));$this->db->update('users', $data);}public function ubahuserpassword($id){$data = ["password" => md5($this->input->post('password'))];$this->db->where('user_id', $this->input->post('user_id'));$this->db->update('users', $data);}}?>
di bagian Biodata_model.php
<?phpclass Biodata_model extends CI_Model{public function getAllbiodata(){$this->db->select('*');$this->db->from('biodata');$this->db->join('users', 'biodata.biodata_username_users = users.username');$query = $this->db->get();return $query;}public function jumlahbiodata(){$c = $this->db->query('select * from biodata');$hitung_c = $c->num_rows();return $hitung_c;}public function getbiodataid($id){$this->db->select('*');$this->db->from('biodata');$this->db->join('users', 'biodata.biodata_username_users = users.username');$this->db->where('id_biodata',$id);$query = $this->db->get()->row_array();return $query;}public function update_biodata($id_biodata,$jk,$tl,$tlh,$alamat,$agama,$kerja,$pendidikan,$tlp,$gambar){$hsl=$this->db->query("UPDATE biodata set jenis_kelamin='$jk',tempat_lahir='$tl',tanggal_lahir='$tlh',alamat='$alamat',agama='$agama',pekerjaan='$kerja',riwayatpendidikan='$pendidikan',telepon='$tlp',photo='$gambar' where id_biodata='$id_biodata'");return $hsl;}public function update_biodata_tanpa_gambar($id_biodata,$jk,$tl,$tlh,$alamat,$agama,$kerja,$pendidikan,$tlp){$hsl=$this->db->query("UPDATE biodata set jenis_kelamin='$jk',tempat_lahir='$tl',tanggal_lahir='$tlh',alamat='$alamat',agama='$agama',pekerjaan='$kerja',riwayatpendidikan='$pendidikan',telepon='$tlp' where id_biodata='$id_biodata'");return $hsl;}}?>
oke lanjut ke bagian buat dashboard admin
contoh saya disini dashboard nya yaitu Page.php
<?phpclass Page extends CI_Controller{function __construct(){parent::__construct();$this->load->model('User_model');$this->load->model('Biodata_model');if($this->session->userdata('logged_in') !== TRUE){redirect('login');}}function index(){$data['title'] = 'Dashboard Admin';$data['user'] = $this->db->get_where('users', ['username' => $this->session->userdata('username')])->row_array();$username = $this->session->userdata('username');$data['jumlahuser'] = $this->User_model->jumlahuser();$data['jumlahbiodata'] = $this->Biodata_model->jumlahbiodata();//Allowing akses to admin onlyif($this->session->userdata('level') === 'admin'){$data['judul'] = 'Dashboard Admin';$this->load->view('admin/templates/header', $data);$this->load->view('admin/templates/navbar', $data);$this->load->view('admin/index',$data);$this->load->view('admin/templates/footer', $data);}else{echo "Access Denied";}}}
kemudian di bagian tampilan/frontend yaitu letak nya di View
disini saya membuat 2 folder terpisah untuk admin dan operator
sebagai berikut demo contoh Aplikasi Latihan Login dan CRUD
jika operator ingin mengakses dashboard admin,
contoh tampilan nya access denied atau bisa kamu custom
sesuai selera masing-masing
kamu bisa download Source code ini dengan gratis
silakan pelajari module nya, yang dari saya buatkan gratis
untuk kalian semua yang ingin belajar Web developer
dengan codeigniter 3
Download Source Code dibawah ini
Google Drive 1
Google Drive 2
Password Rar : [gagaltotal666]
oke mungkin itu saja mengenai modul sederhana Login dan CRUD
dengan Framework PHP yaitu Codeigniter 3.1.11
kalau ada kesalahan dan kekurangan nya
mohon berikan masukan nya ya
sekian dan semoga bermanfaat...
tutorial selanjutnya akan saya buatkan
di versi framework PHP laravel 8
Wasalamualaikum Wr.Wb...
0 Comments