Ini adalah salah satu contoh pembuatan login page dengan menggunakan Framework CodeIgniter dan database MySQL. Ada banyak contoh yang bisa Anda lihat di internet baik menggunakan framework CI atau PHP native.
Buat Database MysQL
Jalankan SQL Query di bawah ini, sudah termasuk user demo dan password demo untuk login nya.
CREATE TABLE IF NOT EXISTS `t_user` ( `id` int(5) NOT NULL AUTO_INCREMENT, `user` varchar(255) NOT NULL, `pass` varchar(255) NOT NULL, `nama` varchar(255) DEFAULT NULL, `alamat` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `telp` varchar(255) DEFAULT NULL, `foto` varchar(255) DEFAULT NULL, `level` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; -- -- Dumping data for table `t_user` -- INSERT INTO `t_user` (`id`, `user`, `pass`, `nama`, `alamat`, `email`, `telp`, `foto`, `level`) VALUES (3, 'demo', 'fe01ce2a7fbac8fafaed7c982a04e229', 'demo user', 'malang', 'demouser@silumansupra.xyz', '1', '1', '0'); /*!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 */;
Konfigurasi CodeIgniter
Autoload.php
tambahkan konfigurasi pada application/config/autoload.php menjadi sepert ini:
$autoload['libraries'] = array('database','email','session'); $autoload['helper'] = array('url','file','security');
Config.php
ubah konfigurasi pada application/config/config.php dimana sebelumnya
$config['base_url'] = ''; $config['index_page'] = 'index.php';
menjadi
$config['base_url'] = "http://".$_SERVER['HTTP_HOST']; $config['base_url'] .= preg_replace('@/+$@', '', dirname($_SERVER['SCRIPT_NAME'])).'/'; $config['index_page'] = ''; //hapus file index.php
Database.php
ubah konfigurasi application/config/database.php sesuai dengan pengaturan database server Anda
$db['default'] = array( 'dsn' => '', 'hostname' => '127.0.0.1', //bisa diisi localhost atau ip server 'username' => 'root', //username mysql server 'password' => 'rootpass', //password mysql server 'database' => 'database', //nama database '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 );
Routes.php
ubah konfigurasi application/config/routes.php dimana default controller-nya diganti dengan file c_home.php
$route['default_controller'] = 'c_home';
.htaccess
untuk mendukung clean url, Anda harus mengubah konfigurasi file .htaccess pada root directory dan application directory. Jika belum ada file .htaccess buat filenya dan copy-paste kan script di bawah ini
Options +FollowSymLinks Options -Indexes <FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))"> Order deny,allow Deny from all </FilesMatch> DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Buat File Controllers, Models, dan Views
Langkah berikutnya adalah membuat file controllers yang akan dipanggil pertama kali oleh aplikasi, yaitu C_home.php
C_home.php
buat file di application/controllers/C_home.php
<?php if (!defined('BASEPATH')) exit('No direct access'); class C_home extends CI_Controller { function __construct() { parent::__construct(); //$this->load->model(''); } public function index() { if ($this->session->userdata('status') != "login") { redirect(base_url("c_login")); } $this->load->view('v_home'); } }
Catatan:
Ketika file C_home.php memanggil fungsi index() pertama kali dilakukan cek session, yaitu status userdata adalah “login” atau tidak. Jika TIDAK, maka akan di-redirect ke base_url c_login (file controllers) yang akan kita buat setelah ini.
C_login.php
buat file di application/controllers/C_login.php
<?php class C_login extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('m_login'); } function index() { $this->load->view('v_login'); } function aksi_login() { $user = $this->input->post('user'); $pass = $this->input->post('pass'); $where = array( 'user' => $user, 'pass' => md5($pass) ); $cek = $this->m_login->cek_login("t_user", $where)->num_rows(); if ($cek > 0) { $data_session = array( 'nama' => $user, 'status' => "login" ); $this->session->set_userdata($data_session); redirect(base_url("c_home")); } else { $data["error"] = "Username dan Password Salah"; $this->load->view('v_login', $data); //redirect(base_url("c_login")); } } function logout() { $this->session->sess_destroy(); redirect(base_url("c_login")); } }
catatan:
Buat File Models
M_login.php
Buat file di application/models/m_login.php
<?php class M_login extends CI_Model { function cek_login($table, $where) { return $this->db->get_where($table, $where); } }
catatan:
Buat File Views
v_login.php
Buat file di application/views/v_login.php
untuk script lengkapnya Anda dapat melihat di gituhub saya di sini
catatan:
v_home.php
Buat file di application/views/v_home.php
<p> Hello world's<br><br> <a href="<?php echo base_url(); ?>c_login/logout">logout</a> </p>
catatan:
Run!!!
untuk demo site nya klik tautan ini : Demo
Jika ada pertanyaan atau ada hal yang ingin didiskusikan silahkan Anda mengisi kolom komentar di bawah ini, Terima Kasih