Posted by : rizky larena
Kamis, 10 Desember 2015
Cara Membuat User Login Dinamis dari Database di YII - Tutorial kali ini akan membahas bagaimana cara memanfaatkan data user di database agar bisa login di yii, hampir sebagian besar aplikasi yang akan dibangun memiliki pengguna yang lebih dari satu.
Jika defaultnya user hanya bisa di tambah secara statis di UserIdentity, maka tutorial ini akan membahas bagaimana cara membuat user agar dinamis dikelola di aplikasi, bisa melakukanregistrasi, update profile, kelola user dan lihat detail user, berikut tutorial cara membuat login dari database di yii:
![Contoh Form Login YII cara membuat user bisa login dari tabel di yii, login dinamis di yii, cara login dari tabel yii](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfUSpPUnaxf-j2QK1ZxwIkVE9Mgheemix5xZN6258jHTGkBToFkm7sD3kS1vb9bHMdsR6sIvy9-WTIv9JrBALc7rOu18P10NCIsMjjSAr3AdG3R1J1GUYCXbSgUUVJgOlZiRRPVwg1lMtA/s320/form-login-dinamis-di-yii.png)
Langkah Pertama:
Siapkan database user, minimal ada id, username dan password. Anda bisa gunakan query SQL dibawah ini untuk membentuk tabel dengan cepat, biar tidak ribet berikut querynya:
Cara penggunaanya, buat database baru atau database yang sudah ada, masuk ke phpmyadmin, masuk ke databasenya, kemudian akan muncul tab menu SQL, anda tinggal copy paste query tabel dibawah ini ke form kemudian klik GO.
Cara penggunaanya, buat database baru atau database yang sudah ada, masuk ke phpmyadmin, masuk ke databasenya, kemudian akan muncul tab menu SQL, anda tinggal copy paste query tabel dibawah ini ke form kemudian klik GO.
CREATE TABLE IF NOT EXISTS `user` (
`idUser` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`namaLengkap` varchar(255) NOT NULL,
`jenisKelamin` varchar(2) NOT NULL,
`tanggalLahir` date NOT NULL,
`alamat` text NOT NULL,
`email` varchar(30) NOT NULL,
`telephone` varchar(15) NOT NULL,
`level` int(11) DEFAULT '3',
`status` int(2) DEFAULT '0',
PRIMARY KEY (`idUser`)
);
Langkah Kedua:
Apabila telah dibuat selanjutnya generate menggunakan GII tools, di YII sehingga membentuk sebuah CRUD di aplikasi yang anda buat. Kemudian buka UserController di folder
Selanjutnya Cari method actionCreate() dan actionUpdate()
/namaaplikasi/protected/controllers/UserController.php.
Selanjutnya Cari method actionCreate() dan actionUpdate()
Ganti script default actionCreate() dengan kode actionCreate() dibawah ini:
public function actionCreate()
{
$model=new User('create');
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['User']))
{
$model->attributes=$_POST['User'];
$model->password = md5($model->password);
if($model->save())
$this->redirect(array('view','id'=>$model->idUser));
}
$this->render('create',array(
'model'=>$model,
));
}
dan Ganti script default actionUpdate() dengan kode actionUpdate() dibawah ini:
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['User']))
{
$model->attributes=$_POST['User'];
$model->password = md5($model->password);
if($model->save())
$this->redirect(array('view','id'=>$model->idUser));
}
$this->render('update',array(
'model'=>$model,
));
}
Jangan lupa untuk tambahkan beberapa data user, agar nanti bisa login ke database, melalui hasil CRUD tadi.
Langkah Ketiga:
Buka file UserIdentity di folder
Silahkan replace script default UserIdentity dengan kode UserIdentity dibawah ini:
/namaaplikasi/protected/Components/UserIdentity.php.
Silahkan replace script default UserIdentity dengan kode UserIdentity dibawah ini:
<?php
/**
* UserIdentity represents the data needed to identity a user.
* It contains the authentication method that checks if the provided
* data can identity the user.
*/
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$username = strtolower($this->username);
$user = User::model()->find('LOWER(username)=?', array($username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($user->password!==md5($this->password))
$this->errorCode = self::ERROR_PASSWORD_INVALID;
else
{
$this->_id = $user->idUser;
$this->username = $user->username;
$this->setState('record', $user);
$this->errorCode = self::ERROR_NONE;
}
return $this->errorCode == self::ERROR_NONE;
}
public function getId()
{
return $this->_id;
}
}
?>
Langkah Keempat:
Silahkan coba running aplikasi anda dengan cara login ke aplikasi
http://localhost/namaaplikasi/index.php?r=site/login