Tutorial Login dan session menggunakan Phalcon PHP Framework

Baik pada tutorial kali ini saya akan memberikan tutorial menegenai pembuatan login menggunakan phalcon php framework dan juga session yang akan didaftarkan dengan phalcon.



Konsep dalam login ini adalah sbebagai berikut :

1. user sudah terdaftar di database (sebelumnya kita input manual ke database data user)
2. user menginput password dan database
3. Cek username dan password di database
4. Apabila tersedia maka daftarkan session username dan id dari user lalu pindahkan ke halaman home
5. Apabila gagal kembalikan ke form login dan beri peringatan bahwa username atau password salah.

Baik langsung saja kita persiapkan database terlebih dahulu , kita buat saja database test_phalcon.
Setelah itu kita buat tabel dengan nama tbl_user , sehingga berikut ini merupakan query untuk tabel tbl_user :
CREATE TABLE IF NOT EXISTS `tbl_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



Setelah itu kita inputkan beberapa data ,contoh :
INSERT INTO `tbl_user` (`id`, `username`, `password`) VALUES
(1, 'mahesa', 'mahesa123'),
(2, 'desta', 'destacs123');



Setelah itu kita buat project pada phalcon , jika blm mengetahui cara membuat project dengan phalcon bisa ikuti link ini http://antzstudioblog.blogspot.com/2014/12/membuat-project-dengan-phalcon-framework.html

buat project dan beri nama folder dengan tutorial_phalcon_login. Lalu kita set config nya yang berada di folder app/config/config.php . Lalu kita set menjadi sepert ini  :
<?php
return new \Phalcon\Config(array(
    'database' => array(
        'adapter'     => 'Mysql',
        'host'        => 'localhost',
        'username'    => 'root',
        'password'    => '',
        'dbname'      => 'test_phalcon',
    ),
    'application' => array(
        'controllersDir' => __DIR__ . '/../../app/controllers/',
        'modelsDir'      => __DIR__ . '/../../app/models/',
        'viewsDir'       => __DIR__ . '/../../app/views/',
        'pluginsDir'     => __DIR__ . '/../../app/plugins/',
        'libraryDir'     => __DIR__ . '/../../app/library/',
        'cacheDir'       => __DIR__ . '/../../app/cache/',
        'baseUri'        => '/tutorial_phalcon_login/',
    )
));



Oke semua persiapan database dan project kita sudah selesai , selanjutnya kita persiapan untuk membuat controller dan view.
Buat controller dengan nama LoginController.php dan buat method indexAction , sehingga isi dari :

LoginController.php :

<?php
class IndexController extends Phalcon\Mvc\Controller
{
 public function indexAction()
    {
  
    }
}



Setelah itu kita buat model dengan nama TblUser.php. Sehingga isi dari model
TblUser.php :
<?php
class TblUser extends \Phalcon\Mvc\Model
{

    /**
     *
     * @var integer
     */
    public $id;

    /**
     *
     * @var string
     */
    public $username;

    /**
     *
     * @var string
     */
    public $password;

    
}

Setelah itu kita buat view dalam folder views login/index.volt. Pembuatan index.volt ini untuk membuat tampilan form login,  sehingga isi dari

index.volt :
<html>
    <head>
       <title>Tutorial Login</title>
    </head>
    <body>
  <fieldset>
   <legend>Sign In</legend>
    {{ form('login/proseslogin', 'role': 'form') }}
    <table>
     <tr>
      <td> Username </td>
      <td> <input type="text" name="username" class="form-control" placeholder="User ID"/> </td>
     </tr>
     <tr>
      <td> Password </td>
      <td><input type="password" name="password" placeholder="Password"/></td>
     </tr>
     <tr>
      <td colspan=2><button type="submit" class="btn bg-olive btn-block">Log in</button>  </td>
     </tr>
     <tr>
      <td colspan=2>{{ content() }}</td>
     </tr>
    </table>
     </form>
  </fieldset>
    </body>
</html>

Jika di jalankan maka tampilanya akan seperti berikut :

Penjelasan :
{{ form('login/proseslogin', 'role': 'form') }}

script diatas adalah script untuk memberikan action pada form tersebut yang mengarah ke LoginController dengan method prosesloginAction.

Selanjutnya setelah index.volt setelah dibuat, sekarang kita akan membuat method prosesloginAction pada loginController ,sehingga isi dari method tersebut adalah :
<?php
public function prosesloginAction()
 {
        if ($this->request->isPost()) {
   $username = $this->request->getPost('username');
              $password = $this->request->getPost('password');
               $tbluser = TblUser::findFirst("username='$username'");
   if ($tbluser)
   {
    if($password==$tbluser->password)
    {
     $this->_registerSession($tbluser);
     $this->response->redirect('home');
     }
   }
   echo "Username atau password salah";
   return $this->dispatcher->forward(array("action" => "index"));
  }
 }


Penjelasan script diatas :

$tbluser = TblUser::findFirst("username='$username'");
script tersebut adalah script untuk melakukan pencarian pada model TblUser yang mana mengarah pada tabel tbl_user dan field yang di filter adalah username.

if ($tbluser)
{
    if($password==$tbluser->password)
    {
        $this->_registerSession($tbluser);
        $this->response->redirect('home');
    }
}


apablia username tersebut sama maka akan d cek kembali apakah password sama , jika password sama maka akan meregistrasi session disana terdapat script $this->_registerSession($tbluser) dimana script tersebut untuk mendaftarkan session. setelah itu ada script $this->response->redirect('home') script tersebut adalah script untuk meredirect ke controller home yang otomatis akan mengarah pada method index.

Berikut ini adalah method registerSession :
<?php
private function _registerSession(TblUser $user)
    {
  $this->session->set('auth', array(
            'isLog' => 'Y',
            'id' => $user->id,
            'username' => $user->username
        ));
    }


Setelah itu kita buat fungsi logout , berikut ini merupakan method logoutnya :
<?php
public function logoutAction()
{
 $this->session->destroy();
 echo "Session sudah di destroy";
}


Sehingga isi dari LoginController.php :
<?php
class LoginController extends Phalcon\Mvc\Controller
{
 public function indexAction()
    {
  
    }
 
 private function _registerSession(TblUser $user)
    {
  $this->session->set('auth', array(
            'isLog' => 'Y',
            'id' => $user->id,
            'username' => $user->username
        ));
    }
 
 public function prosesloginAction()
 {
        if ($this->request->isPost()) {
   $username = $this->request->getPost('username');
            $password = $this->request->getPost('password');
            $tbluser = TblUser::findFirst("username='$username'");
   if ($tbluser)
   {
    if($password==$tbluser->password)
    {
     $this->_registerSession($tbluser);
     $this->response->redirect('home');
     }
   }
   echo "Username atau password salah";
   return $this->dispatcher->forward(array("action" => "index"));
  }
 }
 
 public function logoutAction()
 {
  $this->session->destroy();
  echo "Session sudah di destroy";
 }
}


Setelah kita membuat LoginController selanjutnya kita buat controller Home , dimana controller ini yang dipanggil setelah login berhasil , berikut ini adalah isi dari HomeController.php.

HomeController.php :
<?php
class HomeController extends Phalcon\Mvc\Controller
{
 public function indexAction()
    {
  
    }
 
}


selanjutnya kita buat view  index.volt pada folder Home , sehingga isi dari index.volt yang berada pada folder Home/index.volt.
index.volt :
<html>
    <head>
       <title>Tutorial Login</title>
    </head>
    <body>
 <?php
   if ($this->session->has("auth")) {
   $auth = $this->session->get("auth");
   $username=$auth['username'];
   echo "Hallo selamat datang $username ";
   ?>
   <br> <a href="{{ url('login/logout') }}">Logout</a>
   <?php
   }
 ?>
    </body>
</html>

Setelah itu jalankan browser dan langsung eksekusi !!!
Download file lengkap di bawah ini :


Posting Komentar

3 Komentar