Panada: Membuat Halaman Login


Membuat login menggunakan Panada Framework tidak begitu sulit, kalo ini saya mencoba untuk membuat tutorial bagaimana membuat halaman login. Halaman login biasanya dibutuhkan jika user ingin mengakses halaman web yang terproteksi atau halaman yang bersifat private.
Introduction
 Hal-hal yang dibutuhkan untuk membuat halaman login, terutama library yang harus diload pada Panada, berikut diantaranya :

  • Library Request
    untuk mengambil input dari user yang akan divalidasi

  • Library Database
    Ini bisa diabaikan jika tidak menggunakan database, dalam menyimpan username atau password.

Karena disini menggunakan database, diharapkan settingan** “config.php” **anda pada bagian database telah disetting dengan benar, sedangkan struktur tabelnya sendiri saya menggunakan seperti kode dibawah ini

CREATE TABLE IF NOT EXISTS `users` (  
  `id` int(3) NOT NULL auto_increment,  
  `username` varchar(16) NOT NULL,  
  `password` varchar(32) NOT NULL,  
  `nama_depan` varchar(32) NOT NULL,  
  `nama_belakang` varchar(32) NOT NULL,  
  `email` varchar(32) NOT NULL,  
  PRIMARY KEY  (`id`)  
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;  

INSERT INTO `users` (`id`, `username`, `password`, `nama_depan`, `nama_belakang`, `email`) VALUES  
(1, 'chars19', 'b69d9bc635ccd79ad2c64bc862abe3b4', 'Lionel', 'Messi', '[email protected]');  

Kebutuhan File
  Ada 2 file yang akan dibuat, yaitu 1 buah file Controller dan 1 buah
  file View.

  • /apps/controller/login.php
    File ini adalah controller untuk penanganan login dan input user

    class Controller_login extends Panada  
    

    {
    public function construct() {
    parent::
    construct();
    $this->request = new Library_request();

    $this->data_login =
    array(
    ‘has_login’ => false,
    ‘error_stat’=>false,
    ‘error_info’=>“,
    ‘name’=>“,
    ‘title’=>‘Silahkan Login’);
    }

    function index(){  
    

    if($this->request->post(‘submit’))
    $this->proses_login();
    else
    $this->view_loginform( $this->data_login);
    }

    private function proses_login() {  
    

    $this->db = new Library_db();

    $name = $this->request->post(‘username’, FILTER_SANITIZE_MAGIC_QUOTES);
    $pass = $this->request->post(‘password’, FILTER_SANITIZE_STRING);

    $this->data_login[‘name’] = $name;
    $this->data_login[‘error_stat’] = true ;

    if(! empty($name) and !empty($pass)) {
    $data = $this->db->find_one(‘users’,
    array(‘username’=>$name, ‘password’=>md5($pass)));
    if(false == $data)
    $this->data_login[‘error_info’] = ‘Username / Password tidak valid’;
    else {
    $this->data_login[‘title’] = ‘Terima kasih telah login’;
    $this->data_login[‘has_login’] = true;
    }
    }
    else
    $this->data_login[‘error_info’] = ‘Data tidak boleh kosong’;

    $this->view_loginform( $this->data_login);
    }

    function logout() {  
    

    echo “Anda telah logout
    ”;
    echo ‘Klik disini untuk login’;
    }
    }
    ?>

Penjelasan Kode
** baris 6:** meload library request untuk mengambil hasil post dari form .
** baris 8:** data yang akan dikirim ke view.
** baris 18-21:** mengecek apakah nilai post ‘submit’ ada, jika ada lakukan proses_login() jika tidak tampilkan view.
** baris 25:** meload library database.
** baris 27-28:** mengambil nilai post ‘username’ dan ‘password’.
Nilai post ini difilter dengan FILTER_SANITAZE_MAGIC_QUOTES
untuk username dan password, filter ini untuk melakukan escape pada karakter- karakter tertentu. _INFO_
** baris 30-31:** set nilai untuk view.
** baris 33:** cek apakah nilai submit ‘username’ dan ‘password’ tidak sama dengan kosong.
** baris 34:** melakukan query ke database, $this->db->find_one() ini
untuk mengambil 1 data berdasarkan argument yang
diberikan, nilai kembaliannya adalah object dari hasil
query jika data yang dicari ada, atau false jika data
tidak ada. Info tentang perintah disini.
** baris 37:** jika data yang dicari tidak ada set nilai ‘error_info’.
** baris 39-40: **Login sukses.
** baris 44: **baris ini dieksekusi jika, data post tidak lengkap, misalkan password atau usernamenya kosong.
** baris 50-52:** adalah fungsi untuk logout()
fungsi $this->location() adalah fungsi untuk menampilkan url yang
ingin ditampilkan. [INFO](http://www.panadaframework.com/documentation/id/re ferences/global_method.html)

  • /apps/view/loginform.php
    Kode

    Selamat Datang __

          [Logout](login/logout)  
    
                   action="#">  
    

    Name

                value="">  
    

    Password

                    value='Login'>  
    

Penjelasan Kode
variabel-variabel pada file ini adalah ‘key’ dari
_ $this->datalogin yang dikirim lewat view, secara default Panada
akan merubah nilai ‘key’ dari sebuah array yang dikirim lewat perintah view.
Misalkan_ $data[‘login’] = true_;
maka di file ‘view’, kita bisa menggunakan variabel $login yang merupakan ‘key’ dari $data, dimana nilainya adalah true.
Hal ini sama dengan kebanyakan PHP Framework yang lainnya.

** baris 8-10: **adalah yang akan ditampilkan jika telah login atau loginnya sukses.
** baris 15-29:** sebaliknya jika belum atau login gagal.

Note :
  adalah tempat instalasi Panada

Referensi