Cara Membuat Form Pendaftaran di CodeIgniter
Diperbaharui 3 Agustus 2020 8:49 AMPada kesempatan kali ini kita mulai meningkatkan skill programming khsususnya pemahaman tentang cara membuat form pendaftaran di codeigniter.
Sebenarnya untuk form registrasi atau pendaftaran ini hanya menginputkan data ke database, namun karena adanya hash password, template dinamis, terintegrasi AdminLTE-2.4.3, validasi dan efek notifikasi maka saya buatkan seri tutorial register, login, update profile. Berikut adalah tutorialnya, silakan disimak.
1. Download project awal codeigniter yang telah terintegrasi dengan template adminlte [ ci-adminlte ] → ekstrak → ganti nama menjadi ci-register → buka di text editor
2. Buat database dengan nama susantokun_ci_register dan masukkan sql berikut :
3. Buka application/config/autoload.php dan ubah menjadi seperti berikut :
$autoload['libraries'] = array('database','session','form_validation','template');
$autoload['helper'] = array('url','form','file','my');
$autoload['model'] = array('Konfigurasi_model');
4. Buka application/config/database.php dan ubah menjadi seperti berikut :
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'susantokun',
'password' => 'susantokun',
'database' => 'susantokun_ci_register',
'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
);
Keterangan :
Sesuaikan username, password dan database sesuai pengaturan yang kamu gunakan.
5. Buka application/config/routes.php dan ubah menjadi seperti berikut :
$route['default_controller'] = 'auth/register';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
6. Buat file baru application/helpers/my_helper.php dan masukkan code berikut :
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
if(!function_exists('get_hash')){
function get_hash($PlainPassword){
$option=['cost'=>5];
return password_hash($PlainPassword, PASSWORD_DEFAULT, $option);
}
}
if(!function_exists('hash_verified')){
function hash_verified($PlainPassword,$HashPassword){
return password_verify($PlainPassword,$HashPassword) ? true : false;
}
}
7. Buat file baru application/core/MY_Controller.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->userdata = $this->session->userdata('userdata');
$this->session->set_flashdata('segment', explode('/', $this->uri->uri_string()));
}
public function check_login()
{
// pengecekan jika tidak ada email dari session maka diarahkan untuk login
if (!$this->session->userdata('is_login')) {
redirect('auth/login');
}
}
}
8. Buat file application/controllers/Auth.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Auth extends MY_Controller
{
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->model('Auth_model');
}
public function register()
{
$site = $this->Konfigurasi_model->listing();
$data = array(
'title' => 'Register | '.$site['nama_website'],
'favicon' => $site['favicon'],
'site' => $site
);
$this->template->load('authentication/layouts/template','authentication/register',$data);
}
public function check_register()
{
$site = $this->Konfigurasi_model->listing();
$data = array(
'title' => 'Register | '.$site['nama_website'],
'favicon' => $site['favicon'],
'site' => $site
);
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[50]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|min_length[5]|max_length[50]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[5]|max_length[20]');
if ($this->form_validation->run() == false) {
$this->template->load('authentication/layouts/template','authentication/register',$data);
}
else {
$this->Auth_model->reg();
$this->session->set_flashdata('alert', '<p class="box-msg">
<div class="info-box alert-success">
<div class="info-box-icon">
<i class="fa fa-check-circle"></i>
</div>
<div class="info-box-content" style="font-size:14">
<b style="font-size: 20px">SUKSES</b><br>Pendaftaran berhasil, Anda sudah bisa login.</div>
</div>
</p>
');
redirect('auth/register','refresh',$data);
}
}
}
9. Buat file application/models/Auth_model.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Auth_model extends CI_Model
{
public $table = 'tbl_user';
public $id = 'tbl_user.id';
public function reg()
{
date_default_timezone_set('ASIA/JAKARTA');
$data = array(
'username' => $this->input->post('username'),
'email' => $this->input->post('email'),
'id_role' => '2',
'created_at' => date('Y-m-d H:i:s'),
'password' => get_hash($this->input->post('password'))
);
return $this->db->insert($this->table, $data);
}
}
10. Buat file application/models/Konfigurasi_model.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Konfigurasi_model extends CI_Model
{
public $table = 'tbl_konfigurasi';
public $id = 'id_konfigurasi';
public $order = 'DESC';
public function listing() {
$this->db->select('*');
$this->db->from($this->table);
$query = $this->db->get();
return $query->row_array();
}
}
11. Untuk bagian view saya buatkan file downloadnya karena jika dijelaskan akan panjang. Jadi, cukup download views-ci-register yang ada pada link di bawah kemudian pindahkan ke views dan replace saja.
12. Sekarang coba buka http://ci-register.test/ maka hasilnya akan seperti gambar berikut :

Itulah tutorial cara membuat form pendaftaran di codeigniter yang dapat saya sampaikan, semoga bermanfaat.
Baca Juga :
01 : Cara Membuat Form Pendaftaran di CodeIgniter
02 : Cara Membuat Multi Login di CodeIgniter
03 : Cara Update Profile Sesuai Data Login di CodeIgniter
04 : Cara Membuat Last Login di CodeIgniter