Login digunakan untuk memisahkan hak akses dari pengguna komputer, seperti user tidak dapat mengakses halaman administrator.
contoh sederhana penerapan login pada website menggunakan PHP OOP bisa dibuat seperti contoh berikut.
Cara membuat session login di PHP dengan teknik OOP
Lanjut ke topik, saya berharap halaman utama codeigneter sudah dapat diakses dan terlihat seperti gambar berikut.
Bila masih belum dapat menampilkan halaman utama codeigneter, sebagai bahan referensi dapat membaca panduannya pada beberapa tulisan berikut
Codeigner Kerangka Pengembangan Aplikasi Website dengan PHP yang kuat dan ringan
cara install nya
Instalasi manual codeigneter
serta cara menggunakannya
Website dengan codeigneter
Tulisan ini berisi bagaimana menggunakan session yang nantinya dapat dikombinasikan dengan basis data.
Pengenalan dan persiapan telah selesai.
Singkatnya skenario yang akan dibuat adalah jika belum melakukan login maka user tidak dapat masuk kehalaman utama codeigneter dan dialihkan ke halaman login kembali. Untuk menyamakan project buat project pada direktori C:\laragon\www jika menggunakan laragon atau C:\xampp\htdocs jika menggunakan XAMPP. dengan nama projectcilogin
# halaman view
view adalah halaman yang akan tampil dan berinteraksi langsung dengan user, buka direktori ..\projectCILogin\app\Views buat file dengan nama login.php dan welcome_message.php (tidak dibuat) sebagai halaman utama
Isi kode berikut dalam file login.php
<!<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Login</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<?=form_open(base_url('login'))?>
<?=csrf_field() ?>
<label for="user">User</label><br>
<input type="input" name="user" /><br /><br>
<label for="body">Password</label><br>
<input type="password" name="password"><br/><br>
<input type="submit" name="submit" value="login" />
<?=form_close()?>
</body>
</html>
# halaman controller
Halaman controller berisi pengontrol halaman view, yang artinya semua aksi atau proses yang terjadi pada codeigneter diatur pada halaman controller, direktorinya terletak pada ..\projectCILogin\app\Controllers, buat file baru beri nama Sign.php
Isi kode berikut pada file Sign.php
<?php
namespace App\Controllers;
class Sign extends BaseController
{
public function signin()
{
helper('form');
echo view('login');
}
public function login()
{
$session = session();
$user = $this->request->getVar('user');
$password = $this->request->getVar('password');
//security yang digunakan jika input penggun dan input tidak kosong
//maka dibolehkan untuk mengakses halaman utama
if(!empty($user) && !empty($password)){
$ses_data = [
'user' => $user,
'logged_in' => TRUE
];
$session->set($ses_data);
return redirect()->to(base_url());
}else{
return redirect()->to(base_url('signin'));
}
}
public function logout()
{
$session = session();
$session->destroy();
return redirect()->to(base_url());
}
}
pada halaman Sign.php kita memiliki 3 fungsi yaitu signin() untuk menampilkan halaman login, login() untuk melakukan proses login dan logout() untuk menghapus sesi login.
# perutean
pengaturan perutean terdapat dalam file routes pada direktori ..\projectCILogin\app\Config\Routes.php, rute diatur agar halaman dapat diakses atau memberi sifat/method pada url yang akan diakses, untuk lebih jelasnya dapat mempelajarinya pada laman berikut https://www.codeigniter.com/user_guide/incoming/routing.html. tambahkan baris kode berikut pada file Routes.php
$routes->get('/', 'Home::index');
$routes->get('signin', 'Sign::signin');
$routes->post('login', 'Sign::login');
$routes->get('signout', 'Sign::logout');
Pada tahap ini kalian sudah dapat mengunjungi halaman http://projectcilogin.test/signin untuk melakukan login, tapi walaupun kalian tidak melakukan login halaman utama tetap dapat diakses, seharusnya halaman utama bisa dibuka setelah dilakukan login.
Untuk membuatnya terjadi dibutuhkan filter data yang disebut autentifikasi
# filter
Bukan direktori ..\projectCILogin\app\Filters buat file baru berinama auth.php dan kodenya adalah sebagai berikut
<?php
namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
class auth implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
$session = session();
if(!session()->get('logged_in')) {
return redirect()->to(base_url('signin'));
}
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// Do something here
}
}
File auth.php tidak dapat bekerja secara otomatis, kita harus mengatur konfigurasi Filters.php bukan file ..\projectCILogin\app\Config\Filters.php dan tambahkan baris perintah berikut dalam larik aliases
'auth' => \App\Filters\auth::class,
sehingga potongan kodenya menjadi seperti berikut
public $aliases = [
'csrf' => CSRF::class,
'toolbar' => DebugToolbar::class,
'honeypot' => Honeypot::class,
'invalidchars' => InvalidChars::class,
'secureheaders' => SecureHeaders::class,
'auth' => \App\Filters\auth::class,
];
Tapi ini belum bekerja, daftarkan filter auth pada perutean sehingga kode routes.php berubah menjadi sebagai berikut
$routes->get('/', 'Home::index',['filter' => 'auth']);
$routes->get('signin', 'Sign::signin');
$routes->post('login', 'Sign::login');
$routes->get('signout', 'Sign::logout',['filter' => 'auth']);
Pada tahap ini kalian sudah dapat melakukan proses login seperti yang diharapkan, silahkan dikembangkan, selamat bekerja dan terimakasih telah membaca. 🙂