Pada tutorial sebelumnya, saya sudah memperkenalkan sedikit tentang MVC pada PHP framework codeigniter. nah, sekarang saya mau coba memperkenalkan sedikit tentang cara membuat Form login dengan menggunakan PHP framework codeigniter. mungkin teman-teman sudah banyak yang tahu tentang bagaimana cara membuat form login dengan PHP framework codeigniter, tapi untuk teman-teman yang belum tahu atau bahkan masih bingung bagai mana cara membuat form login dengan PHP framework codeigniter silahkan di lihat coding nya di bawah.
- Pertama buatlah database myweb_db.
CREATE DATABASE myweb_db
- Buat table user pada database myweb_db
CREATE TABLE `m_user` (
`usr_id` int(11) NOT NULL auto_increment,
`usr_nama` varchar(75) NOT NULL default 'anymous',
`usr_name` varchar(20) NOT NULL default 'anymous',
`usr_pwd` varchar(32) NOT NULL default '',
`usr_isactive` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`usr_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
- Insert data pada table user
INSERT INTO m_user VALUES('','Administrator','Admin','Admin','1')
- Ubah database.php pada application/config
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
//username mysql anda
$db['default']['username'] = 'root';
//password mysql anda
$db['default']['password'] = '';
//database anda
$db['default']['database'] = 'myweb_db';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
- Setting autoload.php pada application/config menjadi
/*
| -------------------------------------------------------------------
| Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/libraries folder
| or in your application/libraries folder.
|
| Prototype:
|
| $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/
$autoload['libraries'] = array('database','session');
/*
| -------------------------------------------------------------------
| Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
| $autoload['helper'] = array('url', 'file');
*/
$autoload['helper'] = array('url','form');
- Buat controller login dengan nama login.php pada application/controllers, yang berisikan:
<?php
class login extends CI_Controller
{
function __construct()
{
//membuat construktor;
parent::__construct();
//meload helper form dan url
$this->load->helper(array('form','url'));
//meload model login
$this->load->model('m_login');
}
function index()
{
//membuat variable judul web yang ditampilkan sebagai judul browser
$data['title'] = 'MYWEB';
//membuat nama header yang ditampilkan pd form login
$data['loginheader'] = 'Login';
//membuat string gagal dimana nantinya digunakan untuk validasi
$data['gagal'] = '';
//meload view login
$this->load->view('v_login',$data);
}
function cekuser()
{
//memanggil model login
$data['query'] = $this->m_login->cekdb();
//mengecek isi dari model login
if($data['query']==null)
{
return false;
}
else
{
return $data['query'];
}
}
function proseslogin()
{
//membuat variable judul web yang ditampilkan sebagai judul browser
$data['title'] = 'MYWEB';
//membuat nama header yang ditampilkan pd form login
$data['loginheader'] = 'Login';
//megecek isi dari fungsi cekuser diatas
//jika data ada maka login berhasil
if($this->cekuser()==true)
{
//membuat variable logo yang nanti ditampilkan pd view
$data['logo'] = 'MYWEB';
//membuat variable account yang nanti ditampilkan pd view
$data['username'] = 'Account: '.$this->input->post('username');
//menyimpan data pada array
$newdata = array
(
'username'=>$data['username'],
'islogin'=>true
);
//membuat sesion
$this->session->set_userdata($newdata);
//menampilkan view home
$this->load->view('v_home',$data);
}
else
{
//membuat validasi gagal yang ditampilkan pada form login
$data['gagal'] = '<div id="notification">Maaf, Proses Login Gagal!<BR>1. Username atau Password anda salah.<BR>2. Coba periksa kembali keadaan <span class="red">Caps lock</span>.</div>';
//memanggil view login
$this->load->view('v_login',$data);
}
}
function logout()
{
//menghapus sesion
$this->session->sess_destroy();
//kembali ke form login
redirect('login/index');
}
}
?>
- Selanjutnya membuat model login, dimana pada model ini dikhususkan
untuk koneksi pada database. simpan dengan nama m_login.php pada
application/models
<?php
class m_login extends CI_Model
{
public function cekdb()
{
//mengambil data dari form login username
$username = $this->input->post('username');
//mengambil data dari form login password
$password = $this->input->post('password');
//sql select usr_id
$this->db->select('usr_id');
//sql where usr_name = username yang diambil dari form login
$this->db->where('usr_name', $username);
//sql where usr_pwd = password yang diambil dari form login
$this->db->where('usr_pwd', md5($password));
//sql where usr_isactive = aktif
$this->db->where('usr_isactive','1');
//sql tabel yang dipilih m_user
$query = $this->db->get('m_user');
//perulangan nilai array yang berisi data dari query sql diatas
foreach($query->result() as $row)
{
return $row->usr_id;
}
}
}
?>
//Untuk penjelasan tentang perulangan nilai array, akan saya jelaskan pada tutorial "Fungsi Foreach" selanjutnya
- Membuat view login, dimana view ini adalah merupakan hasil yang akan
dilihat oleh user. disimpan dengan nama v_login.php pada
application/views.
<html>
<head>
<!-- menampilkan judul pada browser -->
<title><?=$title?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" media="all" href="<?php echo base_url();?>/login.css" />
</head>
<body>
<?php echo form_open("login/proseslogin"); ?>
<div id="wrap">
<div id="maincontent">
<!-- menampilkan header login -->
<div id="header"><?=$loginheader?></div>
<div id="content">
<!-- menampilkan validasi login -->
<?=$gagal?>
<div id="label">Usernama :</div>
<div id="form"><input type="text" name="username"></div>
<div id="label">Password :</div>
<div id="form"><input type="password" name="password"></div>
<div id="label"> </div>
<div id="form"><input type="submit" value="Login"/></div>
</div>
<div id="footer"></div>
</div>
</div>
</form>
</body>
</html>
- Buat view home.php pada application/views. Dimana nanti jika proses login sukses, maka akan menampilkan home.php
<html>
<head>
<!-- menampilkan judul pada browser -->
<title><?=$title?></title>
<link rel="stylesheet" type="text/css" media="all" href="<?php echo base_url();?>/css/home.css" />
</head>
<body topmargin="0" leftmargin="0">
<div id="wrap">
<div id="maincontent">
<div id="header">
<!-- menampilkan judul logo di header -->
<div class="logo"><?=$logo?></div>
<!-- menampilkan account name di header -->
<div class="account"><?=$username?>, <a href="<?php echo site_url(); ?>/login/logout">Logout</a></div>
<div id="clear"></div>
</div>
</div>
</div>
</body>
</html>
- Membuat css login, untuk memperindah tampilan form, disimpan dengan nama login.css pada root folder CodeIgniter xampp/htdocs/CodeIgniter/
/*
Theme Name: Away Login Theme
Description: Theme #1
Author: Darmawan
Author URI: http://darmawantm.blogspot.com
Version: 1.0
*/
body {
font-family: tahoma, "Bitstream Charter", serif;
font-size:12px;
overflow:scroll;
}
#wrap {
border:solid 2px #999999;
width:270px;
margin:0 auto;
margin-top:200px;
padding:2px;
background:#9999CC;
}
#maincontent {
border:solid 2px #fff;
background:#9999CC;
padding: 5px;
}
#header{
padding:5px;
font-weight:bold;
font-size:14px;
}
#content{
border:solid 2px #fff;
background:#fff;
padding: 5px;
}
#notification{
background:#FFFF99;
border:solid 1px #FFCC00;
padding:3px;
}
#label{
float:left;
width:70px;
margin:5px;
}
#form{
margin:5px;
}
.red{
color:#CC0000;
}
- Setting routes.php pada application/config, menjadi
| -------------------------------------------------------------------------
| RESERVED ROUTES
| -------------------------------------------------------------------------
|
| There area two reserved routes:
|
| $route['default_controller'] = 'welcome';
|
| This route indicates which controller class should be loaded if the
| URI contains no data. In the above example, the "welcome" class
| would be loaded.
|
| $route['404_override'] = 'errors/page_missing';
|
| This route will tell the Router what URI segments to use if those provided
| in the URL cannot be matched to a valid route.
|
*/
$route['default_controller'] = "login";
$route['404_override'] = "";
$route['scaffolding_trigger'] = "post";
- Jalankan dengan membuka http://localhost/myweb
Selesai. Silahkan tunggu turotial selanjutnya.
An Error Was Encountered
BalasHapusIn order to use the Session class you are required to set an encryption key in your config file
itu apanya yang salah ya?
yups, saya akan coba menjawab. ini memang sering terjadi bagi anda yg baru mendownload CodeIgniter Update-an terbaru.
Hapusto the point..
Session biasanya akan berjalan secara global dengan setiap buka halaman, sehingga class Session baik harus diinisialisasi di construction Controller Anda, atau dapat otomatis dimuat oleh sistem. Untuk sebagian besar calss Session akan berjalan tanpa pengawasan di Background, sehingga hanya menginisialisasi class akan membaca, membuat, dan Session pembaruan.
Untuk menginisialisasi class session manual dalam constructor controller Anda, gunakan
$this->load->library('session');
Setelah dimuat, objek library Session akan tersedia menggunakan: $this->session
atau lihat pada file: application/config/config.php
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| If you use the Encryption class or the Sessions class with encryption
| enabled you MUST set an encryption key. See the user guide for info.
|
*/
$config['encryption_key'] = 'YOUR KEY';
Note : enkripsi key sebaiknya diisi sekalian, itu berguna jika kamu menggunakan library encrypt.
terma kasih banyak ya gan... ilmu sangat bermanfaat,
BalasHapustapi kenapa ya gan cssnya ga bisa ke baca.. ane kurang ngerti masalah base url ??? :( mohon di jelaskan ya gan ..!!
untuk file login.css di taruh di root folder codeIgniter xampp/htdocs/(taruh disini-sesuai nama Latihan anda)/
HapusNote: lihat lagi postingan No.8 apakah penulisannya.
href="<...?>/login.css" />
untuk "base_url", base_url adalah sebuah pengaturan yang kita buat sendiri di config.php agar kita tak perlu lagi memanggil source code http://localhost/coba/index.php/... kita hanya cukup memanggil base_url nya saja (intinnya mempermudah kita gan).
untuk pengaturannya coba anda buka file config.php, dan coba lihat penampakan yg seperti dibawah ini.
/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
| http://example.com/
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url'] = 'http://localhost/coba/';
note : jika anda menggunakan CodeIgniter versi baru jangan lupa untuk mengisi encryption key(terserah mao di isi apa aja), karna di CI versi terbaru sudah d'default-kan untuk mengisi encryption key.
SELAMAT MENCOBA
Sudah saya coba tutorialnya mulai awal sampe akhir, tapi saya masih nemuin error:
BalasHapusA PHP Error was encountered
Severity: Notice
Message: Undefined property: login::$db
Filename: core/Model.php
Line Number: 51
Fatal error: Call to a member function select() on a non-object in C:\xampp\htdocs\Tugas\CodeIgniter_2.1.3\application\models\m_login.php on line 12
Gimana solusinya gan?
coba anda lihat pada file CodeIgniter anda sndiri.
HapusC:\xampp\htdocs\Tugas\CodeIgniter_2.1.3\application\models\m_login.php on line 12
semestinya anda tidak perlu menaruh folder "CodeIgniter_2.1.3" di dalam folder "Tugas", cukup hanya mengganti nama file CodeIgniter_2.1.3 menjadi Tugas tanpa harus menaruh folder Ci ke dalam folder tugas. (#disini saya mngganti nama "CodeIgniter_2.1.3" mnjadi "coba").
jadi anda hanya perlu memanggil url :
hhtp://localhost/tugas/index.php
(#disini saya hanya memanggil http://localhost/coba/index.php)
oh ya mas berarti untuk error "An Error Was Encountered
BalasHapusIn order to use the Session class you are required to set an encryption key in your config file"
itu berarti bisa di tambahin di bawah
" function __construct()
{
//membuat construktor;
parent::__construct(); "
dengan " $this->load->library('session'); " atau " $config['encryption_key'] = 'YOUR KEY'; " pada config.php ?
lha kalo abis gitu keluar error gini mas " Fatal error: Cannot redeclare class login in C:\xampp\htdocs\loginCI\application\models\m_login.php on line 85 "
gini mas yang error udah bisa,cuma kalo habis log in terus di log out pas di back kok gak jalan ya seisson nya ?
HapusTerima kasih banyak, saya sudah berhasil mencoba
BalasHapusmas klo error seperti ini knp ya :
BalasHapusThe website encountered an error while retrieving http://localhost/index.php. It may be down for maintenance or configured incorrectly.
Error code: 500
koneksi internetnya coba dimatiin... ingat, jangan menjalankan aplikasi secara online karna anda sedang menjalankan aplikasi di host local (Localhost).
Hapusjangan menggunakan "www". pastikan depannya http://localhost/...
semoga sukses gan
MAS KLO GA NGE LOGIN MALAH NGE RELOAD GMN
BalasHapusmas, prosesogin nya langsung ke kondisi gagal, gimana y?
BalasHapusbaca kondisi gagal'y ada di line nomor brapa... kemudian lihat file folder yg di tunjukkan pada kondisi gagal'y... kemungkinan ada kesalan pada sintaks diline tersebut.
Hapusselamat mencoba
nice tutorial
BalasHapustutorial sangat membantu gan bagi pemula yang sedang belajar CI,
BalasHapussaya mendapat masalah ini gan saat proses login nya, sudah di ketikan username dan password sesuai dengan database nya tapi masih tidak dapat masuk kedalam halaman home.
mohon pencerahannya gan..
mampir juga gan http://rosyidaja.blogspot.com/
coba lihat sintaknya... keungkinan ada kesalahan pada $this->load->model(/...)
Hapuskrn di model password menggunakan encrypt md5 tp d struktur database tidak
Hapusketika login kog gk bisa validasi ya mas? padahal username dan passwordnya sudah bener. mohon pencerahannya
BalasHapuscoba dilihat pada sintaks validasi... kemungkinan ada kesalahan sintaks
Hapusselamat mencoba
kok sama, apa plagiat?
BalasHapushttp://gatotkacatulanglunak.wordpress.com/2012/01/22/project-belajar-codeigniter-1-login-form/
y
Hapusrequest gan,,, form login framework panada...
BalasHapussesegera om
Hapusobject not found, gimana nih?
BalasHapusmakasih banyak ilmunya. saya udh cukup bingung awalnya kenapa ga mau. ternyata udh nemu salahnya dimana setelah baca blog ini. smoga ilmunya selalu bermanfaat
BalasHapus