Halooo Yii-ers.
Mau nanya lagi nih
Gimana caranya mendesign ulang formulir login, yang mau saya rubah itu:
Data inputannya berdasarkan database yang telah saya buat.
Misal : di database KANTOR ada table KARYAWAN, inputannya untuk login itu NIK dan PASSWORD.
saya sudah mau coba ngutak-ngatik sitecontroler bagian actionLogin. Tapi malah jadi bingung
mohon bantuannya ya kk.
ini teh mau ngedesain ulang tampilan formulir loginnya aja?? kalo gitu yang mesti diedit bukannya yang dibagian view ya?? alamatnya di /protected/views/site/login.php. Sesuaikan aja dengan kebutuhan…
terus kalo mau nyesuain dengan database punya kita, kita edit juga tuh modelnya di /protected/models/LoginForm.php… kita mesti punya variabel buat nampung inputannya itu, misal $karyawan dan $password…
CMIIW… sama sama lagi belajar neh… hehehe
yuckimoera:
ini teh mau ngedesain ulang tampilan formulir loginnya aja?? kalo gitu yang mesti diedit bukannya yang dibagian view ya?? alamatnya di /protected/views/site/login.php. Sesuaikan aja dengan kebutuhan…
terus kalo mau nyesuain dengan database punya kita, kita edit juga tuh modelnya di /protected/models/LoginForm.php… kita mesti punya variabel buat nampung inputannya itu, misal $karyawan dan $password…
CMIIW… sama sama lagi belajar neh… hehehe
iya gan, setelah saya cek ternyata ada di component/useridentity.php
ini kan pengalananya
public function authenticate()
{
$users=array(
// username => password
'demo'=>'demo',
'admin'=>'admin',
);
nah pas ane coba
public function authenticate()
{
$users=array(
// username => password
'demo'=>'demo',
'admin'=>'admin',
// ini dari input merujuk table
'namatable[fieldNIK]'=>'namatable[fieldpassword]'
);
kok ternyata gak merujuk table ya gan?
malah yang harus dimasukin/ketik itu ‘namatable[fieldNIK]’ dan ‘namatable[fieldpassword]’ sebagai inputan.
supaya merujuk ke table yang diinginkan gimana caranya ya gan?
hoooooh, kalo mau ngerujuk ke tabel yang ada di database kita, buat model yang extends ke CActiveRecord gan… trus di authenticate itu kita rujuk ke ke model yang tadi kita buat… lengkapnya sih ada neh disini dokumentasi yii
petra
(Petra Barus)
April 27, 2011, 12:40pm
5
ini penggalan controller di action tempat pemrosesan form login (asumsi form loginnya dah punya attribute nik sama password…
$loginForm = new LoginForm;
if (isset($_POST['LoginForm'])) {
$loginForm->attributes = $_POST['LoginForm'];
if ($loginForm->validate()) {
$nik = $loginForm->nik;
$password = $loginForm->password
$identity = new UserIdentity($nik, $password);
Yii::app()->user->login($identity);
//redirect
}
}
terus UserIdentitynya, asumsi ada model activerecord bernama Karyawan yang ngemap ke table Karyawan…
class UserIdentity extends CUserIdentity {
private $nik;
public function __construct($nik,$password) {
$this->nik = $nik;
$this->password = $password;
}
public function authenticate() {
$karyawan = Karyawan::model()->find('nik=', array($this->nik));
if( $karyawan === null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if ($karyawan->password != $this->password) //atau pake SHA
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id = $karyawan->id;
$this->username = $karyawan->username;
$this->errorCode = self::ERROR_NONE;
}
return $this->errorCode == self::ERROR_NONE;
}
}
petra:
ini penggalan controller di action tempat pemrosesan form login (asumsi form loginnya dah punya attribute nik sama password…
$loginForm = new LoginForm;
if (isset($_POST['LoginForm'])) {
$loginForm->attributes = $_POST['LoginForm'];
if ($loginForm->validate()) {
$nik = $loginForm->nik;
$password = $loginForm->password
$identity = new UserIdentity($nik, $password);
Yii::app()->user->login($identity);
//redirect
}
}
terus UserIdentitynya, asumsi ada model activerecord bernama Karyawan yang ngemap ke table Karyawan…
class UserIdentity extends CUserIdentity {
private $nik;
public function __construct($nik,$password) {
$this->nik = $nik;
$this->password = $password;
}
public function authenticate() {
$karyawan = Karyawan::model()->find('nik=', array($this->nik));
if( $karyawan === null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if ($karyawan->password != $this->password) //atau pake SHA
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id = $karyawan->id;
$this->username = $karyawan->username;
$this->errorCode = self::ERROR_NONE;
}
return $this->errorCode == self::ERROR_NONE;
}
}
agan petra, saya sudah coba code dari agan.
ternyata pas ke halaman login, layar bersih gak ada tampilan apa2.
gak ada pesan error juga. Knp ya?.
belom berhasil gan
ane masukin nik dan password trus ada pesan error kyk gini
sk_admin itu nama table. Modelnya Skadmin
Bingung ane gan, apa belum nge-map ya?.
klo redirect dirubah, ternyata pesan error berubah
klo saya pake redirect yang ini
$this->render('login',array('model'=>$model));
Keluar pesan errornya kyk gini gan
sk_admin itu nama table , modelnya Skadmin
klo saya pake redirect yang ini
$this->redirect(Yii::app()->user->login($identity));
Keluar pesan kyk gini gan
Tolong ane gan,
petra
(Petra Barus)
May 3, 2011, 3:45am
10
yaaaa… kode yg saya kasih khan bukan buat di copy paste…
~______~
lagian juga saya gak tau kode aslinya (mbak?) putrilangit,
jadinya ya belum tentu cocok
petra:
yaaaa… kode yg saya kasih khan bukan buat di copy paste…
~______~
lagian juga saya gak tau kode aslinya (mbak?) putrilangit,
jadinya ya belum tentu cocok
Hihihi…maklum mas aq blm bisa baca script di yii.
jadi masih meraba2. punya referensi tutorial gak mas biar aq selesai masalah login ini
ibiz4
(Ibiz4)
May 4, 2011, 6:55am
12
sepertinya itu authenticate() belum dipanggil
ane baca lagi manualnya:
public void login(IUserIdentity $identity, integer $duration=0)
$identity IUserIdentity the user identity (which should already be authenticated )
klo tanpa validasi spt ini
if (isset($_POST['login'])) {
$identity = new EUserIdentity($_POST['nik'], $_POST['password']); // EUserIdentity extends CUserIdentity
if ($identity->authenticate()) {
Yii::app()->user->login($identity);
$this->redirect(Yii::app()->user->getReturnUrl(), true);
} else {
Yii::app()->user->setFlash('login-error', 'NIK atau password tidak cocok.');
}
}
agan2 mau nanya donk. Ini program aq salahnya dimana ya?.
Setiap masukin nik dan password salah. Padahal inputnya udah bener.
Ini penggalan UserIdentity
class UserIdentity extends CUserIdentity
{
public function authenticate()
$public $nik;
{
$nik=$this->nik;
$record=Skadmin::model()->findByAttributes(array('nik'=>$nik));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id;
//$this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
ini class loginform
public function rules()
{
return array(
array('nik, password', 'required'),
array('rememberMe', 'boolean'),
array('password', 'authenticate'),
);
}
public function authenticate($attribute,$params)
{
if(!$this->hasErrors())
{
$this->_identity=new UserIdentity($this->nik,$this->password);
if(!$this->_identity->authenticate())
$this->addError('password','Incorrect nik or password.');
}
}
public function login()
{
if($this->_identity===null)
{
$this->_identity=new UserIdentity($this->nik,$this->password);
$this->_identity->authenticate();
}
if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
{
$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
Yii::app()->user->login($this->_identity,$duration);
return true;
}
else
return false;
}
Kira2 apa yang salah ya gan?. kok tiap saya input salah melulu. Padahal udah bener inputnya.
Mohon bimbinganya gan, maklum saya masih newbie , belum bisa baca script yii.
ibiz4:
sepertinya itu authenticate() belum dipanggil
ane baca lagi manualnya:
public void login(IUserIdentity $identity, integer $duration=0)
$identity IUserIdentity the user identity (which should already be authenticated )
klo tanpa validasi spt ini
if (isset($_POST['login'])) {
$identity = new EUserIdentity($_POST['nik'], $_POST['password']); // EUserIdentity extends CUserIdentity
if ($identity->authenticate()) {
Yii::app()->user->login($identity);
$this->redirect(Yii::app()->user->getReturnUrl(), true);
} else {
Yii::app()->user->setFlash('login-error', 'NIK atau password tidak cocok.');
}
}
saya sudah coba code dari agan.
itu disempennya dimana ya gan?.
saya simpen di
public function authenticate($attribute,$params)
. Tapi setiap eksekusi malah jadi nge-blank putih layarnya. putih bersih kyk Aq. Kenapa ya gan?.
petra
(Petra Barus)
May 4, 2011, 8:50am
15
ibiz4:
sepertinya itu authenticate() belum dipanggil
ane baca lagi manualnya:
public void login(IUserIdentity $identity, integer $duration=0)
$identity IUserIdentity the user identity (which should already be authenticated )
klo tanpa validasi spt ini
if (isset($_POST['login'])) {
$identity = new EUserIdentity($_POST['nik'], $_POST['password']); // EUserIdentity extends CUserIdentity
if ($identity->authenticate()) {
Yii::app()->user->login($identity);
$this->redirect(Yii::app()->user->getReturnUrl(), true);
} else {
Yii::app()->user->setFlash('login-error', 'NIK atau password tidak cocok.');
}
}
ah iya,
itu kode yg saya post copy di dari program bikinan saya. di situ authnya ditempelin ke login form
my bad
ibiz4
(Ibiz4)
May 9, 2011, 1:22am
16
putrilangit:
saya sudah coba code dari agan.
itu disempennya dimana ya gan?.
saya simpen di
public function authenticate($attribute,$params)
. Tapi setiap eksekusi malah jadi nge-blank putih layarnya. putih bersih kyk Aq. Kenapa ya gan?.
itu ane naruhnya d controller langsung ndak pake form2an
makasih ya kk, mas, om, pak, dan para2 master Yii atas bantuannya
Alhamdulilah solved.
Ma’af lupa di solved. Baru keingetan
special thx to
yuckimoera
Petra
Ibiz4
muaach…muachh…
yiibaru
(Wrjoe Mosa)
June 8, 2011, 1:23pm
18
maaf agan2 master yii…
sy minta tlong di post ulang secara lengkap scrip login yang di atas??
maklum masih nubi
thengs ya…
gini mas, saya mohon ma’af sebelumnya, bukannya saya tidak mau membagi scriptnya, tapi agar kita bisa sama2 belajar. coba aja mas bikin script nya dulu.
klo ada yang gak bisa atau error di tanya di sini.
NB: Soalnya saya juga try and error , tapi akhirnya berhasil. Walapaupun saya belum begitu faham struktur nya kyk gimana . Maklum mas saya masih newbie juga