Total Tayangan Halaman

Rabu, 29 Juni 2011

#5 Autentikasi Login Zend Framework: Membuat web-aplikasi menggunakan Zend Framework

#5 Autentikasi Login Zend Framework: Membuat web-aplikasi menggunakan Zend Framework

Sebelumnya, kita pernah membuat an mengenal Session di PHP, Pembuatan Struktur table untuk Login, Membuat Form Login pada Zend Framework.

Sekarang kita akan coba untuk menggabungkan ketiga nya, dimana session akan menggunakan cara nya Zend Framework.

Pertama, buka file /application/config.php kemudian tambahkan script berikut :

;Session Setting
resources.session.save_path = APPLICATION_PATH "/../data/session"
resources.session.use_only_cookies = true
resources.session.remember_me_seconds = 864000
resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
resources.session.saveHandler.options.name = "session"
resources.session.saveHandler.options.primary.session_id = "session_id"
resources.session.saveHandler.options.primary.save_path = "save_path"
resources.session.saveHandler.options.primary.name = "name"
resources.session.saveHandler.options.primaryAssignment.sessionId = "sessionId"
resources.session.saveHandler.options.primaryAssignment.sessionSavePath = "sessionSavePath"
resources.session.saveHandler.options.primaryAssignment.sessionName = "sessionName"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "session_data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"

Sebelum nya pada form login.php, terdapat sintak berikut :

class Application_Form_Login extends Zend_Form{
public function init()
{
// Set the method for the display form to POST
$this->setMethod('post');
$this->setAction('http://localhost/pos/Login');
.....
...

pada script $this->setAction(‘http://localhost/pos/Login’); , manandakan bahkan Login adalah Controller yang akan kita tuju, dimana action yang akan dieksekusi adalah indexAction. Sehingga kita buat Sebuah Controller.

/Application/Controller/LoginController.php, kemudian buat script seperti berikut :

class LoginController extends Zend_Controller_Action {
private $session_namespace = "pos";
public function init(){
//$this->_helper->layout->disableLayout();
}
public function indexAction()
{
$user = $this->getRequest()->getParam("username");
$pass = $this->getRequest()->getParam("password");
$data = array('username'=>$user,'password'=>$pass);
$oUser = new Application_Model_vwuser($this->db);
$oUser->_sqlAndStatement($data);
$rowset = $oUser->_sqlFetchData();
if (count($rowset) > 0){
$session = New Zend_Session_Namespace($this->session_namespace);
foreach($rowset as $r){
$session->__set('logon', 'true');
$session->__set('kodeuser', $r->cd);
$session->__set('username', $r->username);
$session->__set('password', md5($r->password));
$session->__set('upassword', $r->password);
$session->__set('idkelompokuser', $r->idkelompokuser);
$session->__set('namakelompokuser', $r->nama);
}
$this->_redirect('/?login=success');
}else{
$this->_redirect('/?err=login');
}
}
}

Penjelasan :
saat kita memasukan nama user dan password pada teks Box Login. Variabel yang dilemparkan adalah username dan password, disini kita lihat perbedaan, dimana biasanya kita menangkap sebuah variabel dengan cara :

$a = $_POST["variable"];
// atau
$a = $_GET["variable"];
// atau
$a = $_REQUEST["variable"];

namun pada Zend kita menggunakan

$user = $this->getRequest()->getParam("username");
$pass = $this->getRequest()->getParam("password");

kemudian variable tersebut dilemparkan ke Model vwuser (untuk pembuatan model dapat dilihat disini)

Script dibawah ini kita memasukan variable kedalam array yang nantinya akan dipisahkan didalam model sebagai kriteria pemilihan data.

$data = array('username'=>$user,'password'=>$pass);

Model sendiri dibentuk dengan membuat Class pada php, sehingga kita perlu meng-instan Class tersebut agar menjadi object dan menggunakan menthod yang ada didalamnya

$oUser = new Application_Model_vwuser($this->db);

Script ini sebetulnya membentuk sintak :
“Select * FROM WHERE (data[0] AND data[1])”

$oUser->_sqlAndStatement($data);

Kemudian kita eksekusi dan menampungnya didalam sebuah array.

$rowset = $oUser->_sqlFetchData();

Hasil dari $oUser->_sqlFetchData(); adalah sebuah array yang memiliki nilai didalamnya.
Logika sederhana untuk login ini adalah sebagai berikut :
IF username = true AND password = TRUE, result = TRUE, berarti terdapat data yang memenuhi keriteria tersebut. tetapi kita memanfaatkan fungsi count($array[]) milik php, berhubung data yang dihasilkan berupa array.

if (count($rowset) > 0){

maksudnya, jika jumlah data lebih dari 0 (Nol), kita daftarkan ke session kemudian melemparkan halaman utama ke dengan cara

$session = New Zend_Session_Namespace($this->session_namespace);
foreach($rowset as $r){
$session->__set('logon', 'true');
$session->__set('kodeuser', $r->cd);
$session->__set('username', $r->username);
$session->__set('password', md5($r->password));
$session->__set('upassword', $r->password);
$session->__set('idkelompokuser', $r->idkelompokuser);
$session->__set('namakelompokuser', $r->nama);
}
$this->_redirect('/?login=success');

method yang sering digunakan secara sederhana dalam penggunaan session adalah:

$session->__set(, ); //untuk menyimpan session
$var = $session->__get(, ); //untuk mendapatkan session

Sampai disini selesai lah tugas kita untuk membuat Login dalam Zend Framework.

Tidak ada komentar:

Posting Komentar