Membuat Form Login dan Register dengan Codeigniter 4 - gallangsdw/login-with-CodeIgniter4-1800016063 GitHub Wiki
Hallo Gallang disini, dan ini adalah langkah-langkah Membuat form login dan Register dengan CodeIgniter 4. Dari beberapa Framework PHP, Codeigniter merupakan salah satu framework yang paling sering dipakai. Codeigniter adalah framework untuk menciptakan dan mengembangkan situs atau aplikasi dengan cepat yang berbasis MVC (Model-View-Controller). Ketika seorang pengguna melakukan permintaan untuk suatu resource, controller yang akan memberi respon pertama. “Controller” akan memahami permintaan pengguna dan melakukan permintaan data yang diperlukan dari “Model”. Oke langsung saja kita ke langkah yang pertama,
untuk instalasi sebenarnya ada 2 cara yaitu melalui composer atau mendownload secara mandiri, pada kali ini saya akan mendownload secara mandiri melalui website codeigniter di https://codeigniter.com/download seperti gambar dibawah ini
kemudian ekstrak hasil download tadi lalu pindahkan ke folder C:\xampp\htdocs
, jangan lupa hidupkan XAMPP terlebih dahulu. jika sudah bisa kita buka folder tadi di text editor kesayangan anda, kali ini saya menggunakan visual studio code. jika sudah, mari kita coba jalankan codeIgniter tersebut melalui cmd atau terminal yang ada di visual studio code.
jika berhasil maka http:/localhost:8080 akan menjadi seperti dibawah ini
oke, jika sudah berhasil mari kita buat database yang kita butuhkan nantinya, buka localhost/phpmyadmin/
kemudian mari kita buat databasenya, saya membuat database dengan nama praktikum
dengan nama tabel users
dan struktur tabelnya seperti berikut
Agar tidak terjadi error, saya sarankan tidak menggunakan primary key pada kolom id karena pada saat register kita tidak menginputkan id
kemudian mari kita konfigurasi environment dengan mengubah nama file yang sebelumnya env
menjadi .env
kemudian ubahlah kodenya menjadi seperti dibawah ini, untuk konfigurasi database silahkan sesuaikan dengan database masing-masing
#--------------------------------------------------------------------
# ENVIRONMENT
#--------------------------------------------------------------------
CI_ENVIRONMENT = development
#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------
# app.baseURL = ''
# app.forceGlobalSecureRequests = false
# app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'
# app.sessionCookieName = 'ci_session'
# app.sessionSavePath = NULL
# app.sessionMatchIP = false
# app.sessionTimeToUpdate = 300
# app.sessionRegenerateDestroy = false
# app.cookiePrefix = ''
# app.cookieDomain = ''
# app.cookiePath = '/'
# app.cookieSecure = false
# app.cookieHTTPOnly = false
# app.CSRFProtection = false
# app.CSRFTokenName = 'csrf_test_name'
# app.CSRFCookieName = 'csrf_cookie_name'
# app.CSRFExpire = 7200
# app.CSRFRegenerate = true
# app.CSRFExcludeURIs = []
# app.CSPEnabled = false
#--------------------------------------------------------------------
# DATABASE
#--------------------------------------------------------------------
database.default.hostname = localhost
database.default.database = praktikum
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi
hapus tanda # untuk mengaktifkan perintah
Langkah selanjutnya adalah melakukan konfigurasi pada controller dimana sebelumnya file home.php
yang memegang control, kini akan kita rubah dimana file users.php
yang menjadi controller. silahkan gandakan file home.php
dan ubah namanya menjadi users.php
dan rubah kodenya menjadi seperti berikut ini
?php namespace App\Controllers;
use App\Models\UserModel;
class Users extends BaseController
{
public function index()
{
echo "<h1>Users</h1>";
}
}
dengan kode tersebut maka halaman awal akan berubah menjadi Users
dengan cara melakukan konfigurasi router setup dan router definitions pada router.php
seperti berikut ini
* --------------------------------------------------------------------
* Router Setup
* --------------------------------------------------------------------
*/
$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Users');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);
/**
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/
// We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Users::index');
jika kita cek maka halaman awal http://localhost:8080/
akan berubah seperti berikut ini, selamat anda berhasil melakukan routing dari home.php
ke users.php
Masuk ke folder views
dan buat folder baru templates
lalu buat file header.php
dan footer.php
. file header.php
akan menjadi header UI pada tampilan login dan dashboard dan file footer.php
juga seperti itu. Jika sudah membuat kedua file tersebut didalah folder templates
maka langsung meluncur ke https://getbootstrap.com/ untuk membuat desain header dan navbar, kemudian kodenya seperti dibawah ini untuk header dan navbar
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" href="/assets/css/style.css">
<title></title>
</head>
<body>
<?php
$uri = service('uri');
?>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="/">Sadewa Kost</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item <?= ($uri->getSegment(1) == '' ? 'active' : null) ?>">
<a class="nav-link" href="/">Login</a>
</li>
<li class="nav-item <?= ($uri->getSegment(1) == 'register' ? 'active' : null) ?>">
<a class="nav-link" href="/register">Register</a>
</li>
</ul>
<?php endif; ?>
</div>
</div>
</nav>
desain navbar sudah ada, kemudian kita buat file css dengan membuat folder assets
didalam folder public
. lalu kita buat file style.css
dengan kode dibawah ini
body{
background-color: #e1e1e1;
}
.form-wrapper{
border-radius: 7px;
}
.form-wrapper label{
font-weight: bold;
}
.errors li{
list-style: none;
width: 100%;
text-align: center;
}
.errors ul{
padding-left: 0;
margin-bottom: 0;
}
@media (max-width: 768px){
.form-wrapper .text-right{
text-align: center !important;
}
.form-wrapper .btn-primary{
display: block;
margin: 0 auto;
}
}
Oke jika sudah mari kita kembali ke folder views
dan buat file dengan nama login.php
. Untuk desainnya sendiri menggunakan bootstrap sehingga kodenya akan seperti ini
<div class="container">
<div class="row">
<div class="col-12 col-sm-8 offset-sm-2 col-md-6 offset-md-3 mt-5 pt-3 pb-3 bg-white from-wrapper">
<div class="container">
<h3>Login</h3>
<hr>
<form class="" action="/" method="post">
<div class="form-group">
<label for="email">Email address</label>
<input type="text" class="form-control" name="email" id="email" value="<?= set_value('email') ?>">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" id="password" value="">
</div>
<div class="row">
<div class="col-12 col-sm-4">
<button type="submit" class="btn btn-primary">Login</button>
</div>
<div class="col-12 col-sm-8 text-right">
<a href="/register">Don't have an account yet?</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
pada gambar screenshot tersebut terdapat script php, hal tersebut berguna untuk alert jika login berhasil, hal ini akan dijelaskan selanjutnya. anda dapat mengabaikannya
setelah membuat halaman login, selanjutnya adalah membuat desain halaman register dengan membuat file register.php
didalam folder views
. Kodenya seperti berikut
<div class="container">
<div class="row">
<div class="col-12 col-sm-8 offset-sm-2 col-md-6 offset-md-3 mt-5 pt-3 pb-3 bg-white from-wrapper">
<div class="container">
<h3>Register</h3>
<hr>
<form class="" action="/register" method="post">
<div class="row">
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="firstname">First Name</label>
<input type="text" class="form-control" name="firstname" id="firstname" value="<?= set_value('firstname') ?>">
</div>
</div>
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="lastname">Last Name</label>
<input type="text" class="form-control" name="lastname" id="lastname" value="<?= set_value('lastname') ?>">
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="email">Email address</label>
<input type="text" class="form-control" name="email" id="email" value="<?= set_value('email') ?>">
</div>
</div>
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" id="password" value="">
</div>
</div>
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="password_confirm">Confirm Password</label>
<input type="password" class="form-control" name="password_confirm" id="password_confirm" value="">
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-4">
<button type="submit" class="btn btn-primary">Register</button>
</div>
<div class="col-12 col-sm-8 text-right">
<a href="/">Already have an account</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
Langkah terakhir adalah membuat footer pada footer.php
dalam folder templates
dengan kode sebagai berikut, kode tersebut berguna untuk melihat aktivitas pada web tersebut
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</body>
</html>
jika desain sudah dibuat maka diinisiasikan ke controller pada Users.php
dengan kode sebagai berikut, method index untuk halaman login dan method register untuk halaman register
<?php namespace App\Controllers;
use App\Models\UserModel;
class Users extends BaseController
{
public function index()
{
$data = [];
helper(['form']);
echo view('templates/header', $data);
echo view('login');
echo view('templates/footer');
}
public function register(){
$data = [];
helper(['form']);
echo view('templates/header', $data);
echo view('register');
echo view('templates/footer');
}
}
apakah sudah selesai? hohoho tentu saja belum, langkah selanjutnya adalah konfigurasi routes.php
agar halaman register dapat terpanggil. sesuaikan kode pada routes.php
seperti dibawah ini
* --------------------------------------------------------------------
* Router Setup
* --------------------------------------------------------------------
*/
$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Users');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);
/**
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/
// We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Users::index');
$routes->match(['get','post'],'register', 'Users::register');
jika sudah sesuai maka kita coba buka http://localhost:8080/ maka hasilnya akan seperti ini
Pada bagian kali ini kita akan membuat registrasi pengguna, oke langsung saja menuju users.php
pada folder controllers
dan ubahlah kodenya menjadi sebagai berikut
public function register(){
$data = [];
helper(['form']);
if ($this->request->getMethod() == 'post') {
//let's do the validation here
$rules = [
'firstname' => 'required|min_length[3]|max_length[20]',
'lastname' => 'required|min_length[3]|max_length[20]',
'email' => 'required|min_length[6]|max_length[50]|valid_email|is_unique[users.email]',
'password' => 'required|min_length[8]|max_length[255]',
'password_confirm' => 'matches[password]',
];
if (! $this->validate($rules)) {
$data['validation'] = $this->validator;
}else{
$model = new UserModel();
$newData = [
'firstname' => $this->request->getVar('firstname'),
'lastname' => $this->request->getVar('lastname'),
'email' => $this->request->getVar('email'),
'password' => $this->request->getVar('password'),
];
$model->save($newData);
$session = session();
$session->setFlashdata('success', 'Successful Registration');
return redirect()->to('/');
}
}
echo view('templates/header', $data);
echo view('register');
echo view('templates/footer');
}
mari kita bedah kode diatas sebentar, disana kita menuliskan script php untuk memasukkan data register pengguna, kemudian dibawahnya kita menuliskan variabel $rules
untuk menvalidasi data yang diinputkan seperti minimal huruf pada nama, password, email dll. Jika semua data sudah sesuai dengan variabel $rules
maka data tersebutkan akan dikirimkan ke models untuk diolah ke database, nantinya kita akan membuat file UserModel.php
sebagai modelsnya. jika berhasil maka setelah register akan didirect ke halaman awal untuk melakukan login.
Setelah itu kita tambahkan script php validation pada file register.php
di folder views/templates
. Hal ini bertujuan agar data yang diinputkan bisa tervalidasi. Kodenya adalah seperti berikut, silahkan disesuaikan
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="password_confirm">Confirm Password</label>
<input type="password" class="form-control" name="password_confirm" id="password_confirm" value="">
</div>
</div>
<?php if (isset($validation)): ?>
<div class="col-12">
<div class="alert alert-danger" role="alert">
<?= $validation->listErrors() ?>
</div>
</div>
<?php endif; ?>
</div>
lalu kita buat file usermodel.php
pada models kemudian tuliskan kodenya sebagai berikut
<?php namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model{
protected $table = 'users';
protected $allowedFields = ['firstname', 'lastname', 'email', 'password', 'updated_at'];
protected $beforeInsert = ['beforeInsert'];
protected $beforeUpdate = ['beforeUpdate'];
protected function beforeInsert(array $data){
$data = $this->passwordHash($data);
$data['data']['created_at'] = date('Y-m-d H:i:s');
return $data;
}
protected function beforeUpdate(array $data){
$data = $this->passwordHash($data);
$data['data']['updated_at'] = date('Y-m-d H:i:s');
return $data;
}
protected function passwordHash(array $data){
if(isset($data['data']['password']))
$data['data']['password'] = password_hash($data['data']['password'], PASSWORD_DEFAULT);
return $data;
}
mari kita lihat kode diatas, disana kita menuliskan protected $table = 'users';
bertujuan bahwa tabel databasae yang diakses adalah users
, kemudian pada protected $allowedFields = ['firstname', 'lastname', 'email', 'password', 'updated_at'];
bertujuan fields apa saja pada tabel users
yang boleh diakses, lalu pada protected $beforeInsert = ['beforeInsert'];
dan protected $beforeUpdate = ['beforeUpdate'];
berguna untuk meninisialisasi method yang akan kita gunakan dibawahnya. selanjutnya, method beforeInsert
berguna untuk memasukkan data saat register, method beforeUpdate
digunakan untuk mengupdate data, sedangkan method passwordHash
untuk mengenkripsi password
Selanjutnya kita akan menambahkan alert success pada halaman login jika kita berhasil melakukan register, sesuaikan kode seperti dibawah ini pada file login.php
<div class="container">
<div class="row">
<div class="col-12 col-sm-8 offset-sm-2 col-md-6 offset-md-3 mt-5 pt-3 pb-3 bg-white from-wrapper">
<div class="container">
<h3>Login</h3>
<hr>
<?php if (session()->get('success')): ?>
<div class="alert alert-success" role="alert">
<?= session()->get('success') ?>
</div>
<?php endif; ?>
Jika sudah mari kita coba registrasi
kemudian jika kita klik akan kedirect ke halaman awal dengan alert success
kita coba lihat pada database apakah bertambah, dan ternyata benar!
Setelah berhasil membuat akun, kini kita akan membuat sistem login dan dashboardnya, yuk langsung kita mulai. buka file users.php
kemudian sesuaikan dengan kode dibawah ini
public function index()
{
$data = [];
helper(['form']);
if ($this->request->getMethod() == 'post') {
//let's do the validation here
$rules = [
'email' => 'required|min_length[6]|max_length[50]|valid_email',
'password' => 'required|min_length[8]|max_length[255]|validateUser[email,password]',
];
$errors = [
'password' => [
'validateUser' => 'Email or Password don\'t match'
]
];
if (! $this->validate($rules, $errors)) {
$data['validation'] = $this->validator;
}else{
$model = new UserModel();
$user = $model->where('email', $this->request->getVar('email'))
->first();
$this->setUserSession($user);
//$session->setFlashdata('success', 'Successful Registration');
return redirect()->to('dashboard');
}
}
echo view('templates/header', $data);
echo view('login');
echo view('templates/footer');
}
hampir sama dengan method pada register, kita menambahkan variabel ruler untuk menvalidasi email dan password yang digunakan cocok atau tidak, kemudian jika berhasil maka akan dibawa ke halaman dashboard. Kemudian kita lanjut ke halaman login.php
disini kita akan menambahkan script untuk menvalidasi input data. Kode akan seperti ini
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" id="password" value="">
</div>
<?php if (isset($validation)): ?>
<div class="col-12">
<div class="alert alert-danger" role="alert">
<?= $validation->listErrors() ?>
</div>
</div>
<?php endif; ?>
<div class="row">
Kemudian buat folder validation
dan file userRules.php
dan kodenya seperti dibawah ini
<?php
namespace App\Validation;
use App\Models\UserModel;
class UserRules
{
public function validateUser(string $str, string $fields, array $data){
$model = new UserModel();
$user = $model->where('email', $data['email'])
->first();
if(!$user)
return false;
return password_verify($data['password'], $user['password']);
}
}
Method validateUser digunakan untuk mevalidasi data input yang dimasukkan dengan yang ada di database, hal ini bisa kita lihat di use App\Models\UserModel;
kemudian kita buat file dashboard.php
pada folder controllers
dengan kode sebagai berikut
<?php namespace App\Controllers;
class Dashboard extends BaseController
{
public function index()
{
$data = [];
echo view('templates/header', $data);
echo view('dashboard');
echo view('templates/footer');
}
//--------------------------------------------------------------------
}
jika kita lihat pada file users.php
di method index akan didirect ke dashboard.php
yang ada di folder controllers
yang kodenya ada diatas, sekarang kita buat file dashboard.php
pada folder views
untuk menampilkan isi dari dashboard. kodenya seperti berikut
<div class="container">
<div class="row">
<div class="col-12">
<h1>Hello, <?= session()->get('firstname') ?></h1>
</div>
</div>
</div>
disana ada script php untuk memanggil method session, maka dari itu kita tambahkan terlebih dahulu method session pada file users.php
seperti dibawah ini
private function setUserSession($user){
$data = [
'id' => $user['id'],
'firstname' => $user['firstname'],
'lastname' => $user['lastname'],
'email' => $user['email'],
'isLoggedIn' => true,
];
session()->set($data);
return true;
}
method diatas berguna untuk user yang berhasil login yang nantinya akan dipanggil oleh dashboard, langkah terakhir adalah kita menambahkan kode pada header agar ada perbedaan antar login session dengan user session dengan menambahkan script php pada file header.php
seperti berikut
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="/">Sadewa Kost</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<?php if (session()->get('isLoggedIn')): ?>
<ul class="navbar-nav mr-auto">
<li class="nav-item <?= ($uri->getSegment(1) == 'dashboard' ? 'active' : null) ?>">
<a class="nav-link" href="/dashboard">Dashboard</a>
</li>
<li class="nav-item <?= ($uri->getSegment(1) == 'profile' ? 'active' : null) ?>">
<a class="nav-link" href="/profile">Profile</a>
</li>
</ul>
<ul class="navbar-nav my-2 my-lg-0">
<li class="nav-item">
<a class="nav-link" href="/logout">Logout</a>
</li>
</ul>
<?php else: ?>
script php yang ditambah bertujuan jika user berhasil login atau masuk ke user session dimana header navbar akan berubah. jika berhasil maka setelah login akan seperti dibawah ini
Profile sendiri akan menggunakan desain dari register namun ada sedikit perbedaan pada button dan field email, jadi langsung saja kita lihat kodenya bagaimana
<div class="container">
<div class="row">
<div class="col-12 col-sm8- offset-sm-2 col-md-6 offset-md-3 mt-5 pt-3 pb-3 bg-white from-wrapper">
<div class="container">
<h3><?= $user['firstname'].' '.$user['lastname'] ?></h3>
<hr>
<?php if (session()->get('success')): ?>
<div class="alert alert-success" role="alert">
<?= session()->get('success') ?>
</div>
<?php endif; ?>
<form class="" action="/profile" method="post">
<div class="row">
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="firstname">First Name</label>
<input type="text" class="form-control" name="firstname" id="firstname" value="<?= set_value('firstname', $user['firstname']) ?>">
</div>
</div>
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="lastname">Last Name</label>
<input type="text" class="form-control" name="lastname" id="lastname" value="<?= set_value('lastname', $user['lastname']) ?>">
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="email">Email address</label>
<input type="text" class="form-control" readonly id="email" value="<?= $user['email'] ?>">
</div>
</div>
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" id="password" value="">
</div>
</div>
<div class="col-12 col-sm-6">
<div class="form-group">
<label for="password_confirm">Confirm Password</label>
<input type="password" class="form-control" name="password_confirm" id="password_confirm" value="">
</div>
</div>
<?php if (isset($validation)): ?>
<div class="col-12">
<div class="alert alert-danger" role="alert">
<?= $validation->listErrors() ?>
</div>
</div>
<?php endif; ?>
</div>
<div class="row">
<div class="col-12 col-sm-4">
<button type="submit" class="btn btn-primary">Update</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
perbedaan yang cukup signifikan akan ada pada field email karena disana kita ubah menjadi read-only sehingga user tidak dapat menggantinya, setelah selesai berurusan dengan tampilan viewsnya sekarang beralih ke bagian controllers
dan masuk pada file users.php
dan buat method untuk profilenya seperti ini
public function profile(){
$data = [];
helper(['form']);
$model = new UserModel();
if ($this->request->getMethod() == 'post') {
//let's do the validation here
$rules = [
'firstname' => 'required|min_length[3]|max_length[20]',
'lastname' => 'required|min_length[3]|max_length[20]',
];
if($this->request->getPost('password') != ''){
$rules['password'] = 'required|min_length[8]|max_length[255]';
$rules['password_confirm'] = 'matches[password]';
}
if (! $this->validate($rules)) {
$data['validation'] = $this->validator;
}else{
$newData = [
'id' => session()->get('id'),
'firstname' => $this->request->getPost('firstname'),
'lastname' => $this->request->getPost('lastname'),
];
if($this->request->getPost('password') != ''){
$newData['password'] = $this->request->getPost('password');
}
$model->save($newData);
session()->setFlashdata('success', 'Successfuly Updated');
return redirect()->to('/profile');
}
}
$data['user'] = $model->where('id', session()->get('id'))->first();
echo view('templates/header', $data);
echo view('profile');
echo view('templates/footer');
}
jika sudah maka kita konfigurasikan pada file routes.php
* Route Definitions
* --------------------------------------------------------------------
*/
// We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Users::index');
$routes->match(['get','post'],'register', 'Users::register');
$routes->match(['get','post'],'profile', 'Users::profile');
kode tersebut berguna untuk route dari halaman session ke halaman profile, jika kita coba hasilnya akan seperti ini
Buat method logout pada file users.php
seperti dibawah ini
public function logout(){
session()->destroy();
return redirect()->to('/');
}
script php diatas berguna untuk keluar dari method session dan direct ke halaman login. Sekarang kita konfigurasikan routes.php
menjadi seperti dibawah ini
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/
// We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Users::index');
$routes->get('logout', 'Users::logout');
$routes->match(['get','post'],'register', 'Users::register');
$routes->match(['get','post'],'profile', 'Users::profile');
sekarang mari kita coba dengan membuat akun seperti berikut
- first name: haha
- last name: hihi
- email: [email protected]
- 123456789
hasilnya
jika login salah
tampilan database sekarang
Wiki ini ditulis oleh Gallang Sadewa, beberapa langkah yang disertai dengan screenshot ada yang sedikit berbeda karena ada penyesuaian agar tidak terjadi error
Made with love by @gallangsdw