131387398 user login yii framework mysql
DESCRIPTION
yiiTRANSCRIPT
![Page 1: 131387398 User Login Yii Framework Mysql](https://reader035.vdocuments.pub/reader035/viewer/2022071920/55cf99ee550346d0339fc952/html5/thumbnails/1.jpg)
Pertama tama ini adalah catetan untuk sendiri, jadi banyak yang ga terlalu detail. Kalau ada yang
kurang jelas/pertanyaan silahkan tuliskan komentar, siapa tau saya bisa menjawab.
Oke, saya sudah membaca tutorial membuat blog pada Yii Framework baru sampai halaman 18
Authenticating User (file pdf nya yii-blog-1.1.0 gratis dari website yii framework), dan
menggunakan Yii Framework versi 1.1.10 yang keluaran Feb 12, 2012. Xampp Control versi 2.6
Setelah membuat aplikasi blog, dan membuat database pada mysql yang sudah tersedia pada
blog demo ( yiiroot\demos\blog\protected\data\schema.mysql ) dan sudah menyeting MySQL
database di file main.php ( webroot\blog\protected\config\main.php )
Dan sudah membuat model dari table table pada database. Membuat CRUD table Post dan
Comment.
% /wwwroot/yii/framework/yiic shell /wwwroot/blog/index.php
Yii Interactive Tool v1.1
Please type 'help' for help. Type 'exit' to quit.
>> model *
......
>> crud Post
......
>> crud Comment
......
>> exit
User Login dengan Yii Framework Mysql
![Page 2: 131387398 User Login Yii Framework Mysql](https://reader035.vdocuments.pub/reader035/viewer/2022071920/55cf99ee550346d0339fc952/html5/thumbnails/2.jpg)
Dan sudah menjalankan contoh link.
http://www.example.com/blog/index.php?r=post
http://www.example.com/blog/index.php?r=comment
// pokok nya sudah menjalankan semua yg ada diatas, beres dan berhasil
Maka saya akan melakukan Authenticating User, login menggunakan user pada database yang
menggunakan password hashPassword (password yang di enkrip md5)
Pertama-tama membuka file /wwwroot/blog/protected/components/UserIdentity.php dan
memodifikasi menjadi seperti 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;
/**
* Authenticates a user.
* @return boolean whether authentication succeeds.
*/
public function authenticate()
{
$user=NamaTableUser::model()->find('LOWER(username)=?',array(strtolower($this-
>username)));
if($user===null)
![Page 3: 131387398 User Login Yii Framework Mysql](https://reader035.vdocuments.pub/reader035/viewer/2022071920/55cf99ee550346d0339fc952/html5/thumbnails/3.jpg)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if(!$user->validatePassword($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$user->id;
$this->username=$user->username;
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCode==self::ERROR_NONE;
}
/**
* @return integer the ID of the user record
*/
public function getId()
{
return $this->_id;
}
}
Perlu diperhatikan pada kode baris 18 NamaTableUser adalah nama dari model ( code
NamaTableUser::model ) pada table user (
/wwwroot/blog/protected/models/NamaTableUser.php ) jangan sampai salah memasukan nama.
Jika mengetest login dengan dengan sembarangan ( username dan password ) maka tidak terjadi
apa-apa atau pesan erorr Yii tidak muncul ( kok tulisan nya rada geje ya? ).
Jika mengetest login dengan benar ( username dan password ) maka pesan error Yii akan muncul
(tanda tanda berhasil). Dikarenakan belum mengubah file NamaTableUser.php (
![Page 4: 131387398 User Login Yii Framework Mysql](https://reader035.vdocuments.pub/reader035/viewer/2022071920/55cf99ee550346d0339fc952/html5/thumbnails/4.jpg)
/wwwroot/blog/protected/models/
NamaTableUser.php ) Maka akan muncul pesan error Yii seperti ini pada browser.
NamaTableUser and its behaviors do not have a method or closure named "validatePassword".
Maka perlu menambahkan kode pada NamaTableUser.php /wwwroot/blog/protected/models/
NamaTableUser.php)
class User extends CActiveRecord
{
......
public function validatePassword($password)
{
return $this->hashPassword($password,$this->salt)===$this->password;
}
public function hashPassword($password,$salt)
{
return md5($salt.$password);
}
......
}
Jika kita salah memasukan nama table pada file UserIdentity.php , dengan sengaja saya
memasukan TestTableUser ( percobaan ) pada file UserIdentity.php (
/wwwroot/blog/protected/components/UserIdentity.php ) maka pesan error Yii akan muncul
seperti ini pada browser (pesan diatas baris pertama)
include(TestTableUser.php) [<a href='function.include'>function.include</a>]: failed to open
stream: No such file or directory
Jika semua sudah benar dijalankan. Pada saat ini saya menggunakan username demo dan
password demo sesuai dengan table yang sudah ada pada MySQL database di file schema.mysql
![Page 5: 131387398 User Login Yii Framework Mysql](https://reader035.vdocuments.pub/reader035/viewer/2022071920/55cf99ee550346d0339fc952/html5/thumbnails/5.jpg)
(yiiroot\demos\blog\protected\data\schema.mysql)
Maka Login sudah berhasil!..