Konfirmasi password bertujuan untuk menghindari terjadinya kesalahan dalam penulisan password. Tidak jarang ketika mengisikan password pada form pendaftaran seperti pembuatan email kita akan diminta untuk memasukkan password sebanyak dua kali untuk konfirmasi kecocokan penulisan password.
Sebelumnya saya sudah pernah membuat ilustrasi penambahan user disertai
username dan
password untuk login ke sistem
(klik di sini), hanya saja pada saat itu belum ada konfirmasi password. Baiklah, saya akan mencoba menambahkan konfirmasi password. Saya menggunakan
usermodel yang sama seperti sebelumnya.
Sekenario yang saya gunakan :
"Ketika create dan update user di situ ada field password dan confirmpassword. Ketika create kedua field harus diisi (required), dan ketika update confirmpassword boleh kosong (password sama) atau masukkan password baru dan konfirmasi (confirmpassword harus diisi)."
Langkah pertama buat attribute baru di dalam user model.
class User extends CActiveRecord
{
public $repeat_password;
.......
kemudian definisikan rule
public function rules(){
return array(
array('password','length', 'max'=>100),
array('repeat_password','compare',
'compareattribute'=>'password',
'message'=>'password do not match','on'=>'create'),
array('repeat_password','required','on'=>'create'),
.....
ketika mendefinisikan model on untuk fungsi create (
'on'=>'create'), gunakan :
public function actionCreate()
{
$model=new User('create');
....
Kemudian tambahkan field confirmpassword di
_form.php
<div class="row">
<?php echo $form->labelEx($model,'repeat_password'); ?>
<?php echo $form->passwordField($model,'repeat_password',
array('size'=>30,'maxlength'=>100)); ?>
<?php echo $form->error($model,'repeat_password'); ?>
</div>
Mofidikasi action Update
public function actionUpdate($id) {
$model=$this->loadModel($id);
//mengambil nilai password
$password=$model->password;
if(isset($_POST['User']))
{
$model->attributes=$_POST['User'];
$pass='Helloword'.sha1($_POST['User']['password']);
$repeat='Helloword'.sha1($_POST['User']['repeat_password']);
if($password===$_POST['User']['password']){
$model->password=$password;
if($model->save())
$this->redirect(array('view','id'=>$model->id));
} else if($password!=$pass) {
if ($repeat===$pass){
$model->password=$pass;
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
else {
Yii::app()->user->setFlash('confirm','Konfirmasi password baru!');
}
}else {
$model->password=$pass;
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('update',array(
'model'=>$model,
));
}
Dan berikut adalah tampilan ketika create dan update :
Silahkan rubah dan pelajari script di atas..
Good Luck!
Artikel keren lainnya:
Belum ada tanggapan untuk "Yii: Confirm Password"
Posting Komentar