<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Login &#8211; Citra Air Nusantara (CAN)</title>
	<atom:link href="https://citanusantara.id/tag/login/feed/" rel="self" type="application/rss+xml" />
	<link>https://citanusantara.id</link>
	<description>Inovasi tanpa batas, solusi cerdas</description>
	<lastBuildDate>Mon, 20 Jun 2022 09:09:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://citanusantara.id/wp-content/uploads/2024/08/cropped-Icon-CAN-32x32.png</url>
	<title>Login &#8211; Citra Air Nusantara (CAN)</title>
	<link>https://citanusantara.id</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">236061052</site>	<item>
		<title>Cara membuat Login Pada Codeigniter 4 #13</title>
		<link>https://citanusantara.id/2022/06/20/cara-membuat-login-pada-codeigniter-4-13/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 20 Jun 2022 09:09:36 +0000</pubDate>
				<category><![CDATA[CodeIgniter 4]]></category>
		<category><![CDATA[Pemrograman Web Lanjut]]></category>
		<category><![CDATA[Login]]></category>
		<guid isPermaLink="false">https://abdulrahmann.com/?p=777</guid>

					<description><![CDATA[Langkah awal untuk membuat fitur login adalah dengan membuat tabel member pada database belajarci4 yang sudah kita buat, isi field nya adalah sebagai berikut : Setelah tabel terbuat, sekarang kita akan membuat sebuah controller Login sebagai berikut : Selanjutnya kita akan membuat sebuah halaman login.php pada folder Views untuk menampilkan data yang diperintahkan oleh Controller [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Langkah awal untuk membuat fitur login adalah dengan membuat tabel member pada database belajarci4 yang sudah kita buat, isi field nya adalah sebagai berikut :</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="306" src="https://ngodingbareng.my.id/wp-content/uploads/2022/07/image-2-1024x306.png" alt="" class="wp-image-787" srcset="https://citanusantara.id/wp-content/uploads/2022/07/image-2-1024x306.png 1024w, https://citanusantara.id/wp-content/uploads/2022/07/image-2-300x90.png 300w, https://citanusantara.id/wp-content/uploads/2022/07/image-2-768x230.png 768w, https://citanusantara.id/wp-content/uploads/2022/07/image-2.png 1060w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Field data pada tabel member</figcaption></figure>



<p class="wp-block-paragraph">Setelah tabel terbuat, sekarang kita akan membuat sebuah controller Login sebagai berikut :</p>



<pre class="wp-block-code"><code>&lt;?php

namespace App\Controllers;

use App\Models\ModelLogin;

class Login extends BaseController
{

    public function index()
    {
        //$buku = $this->BukuModel->findAll();
        $data = &#91;
            'title' => 'Member Login',
            //'buku' => $this->BukuModel->getBuku()
        ];


        return view('login/login', $data);
    }
}</code></pre>



<p class="wp-block-paragraph">Selanjutnya kita akan membuat sebuah halaman <strong>login.php</strong> pada folder Views untuk menampilkan data yang diperintahkan oleh Controller Login sebagai berikut :</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html>
&lt;html lang="en">

&lt;head>

    &lt;meta charset="utf-8">
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge">
    &lt;meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    &lt;meta name="description" content="">
    &lt;meta name="author" content="">

    &lt;title>&lt;?= $title; ?>&lt;/title>

    &lt;!-- Custom fonts for this template-->
    &lt;link href="&lt;?= base_url() ?>/sb-admin/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
    &lt;link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">

    &lt;!-- Custom styles for this template-->
    &lt;link href="&lt;?= base_url() ?>/sb-admin/css/sb-admin-2.min.css" rel="stylesheet">

&lt;/head>

&lt;body class="bg-gradient-secondary">

    &lt;div class="container">

        &lt;!-- Outer Row -->
        &lt;div class="row justify-content-center">

            &lt;div class="card o-hidden border-0 shadow-lg my-5 col-lg-7 mx-auto">
                &lt;div class="card-body p-0">
                    &lt;!-- Nested Row within Card Body -->
                    &lt;div class="row">

                        &lt;div class="col-lg">
                            &lt;div class="p-5">
                                &lt;div class="text-center">
                                    &lt;h1 class="h4 text-gray-900 mb-4">LOGIN&lt;/h1>
                                &lt;/div>


                                &lt;?= csrf_field(); ?>
                                &lt;form class="user" method="post" action="login/cekUser">
                                    &lt;div class="form-group">
                                        &lt;?php
                                        //if(session()->getFlashdata('errIdUser')){
                                        //    $isInvalidUser = 'is-invalid';
                                        //}else {
                                        //    $isInvalidUser = '';
                                        //}

                                        // atau dengan cara menggunakan ternari
                                        $isInvalidUsername = (session()->getFlashdata('errUsername')) ? 'is-invalid' : '';
                                        ?>
                                        &lt;input type="text" class="form-control form-control-user &lt;?= $isInvalidUsername ?>" name="username" id="username" placeholder="Inputkan Username" autofocus>

                                        &lt;?php
                                        if (session()->getFlashdata('errUsername')) {
                                            echo '&lt;div id="validationServer03Feedback" class="invalid-feedback">
                                                    ' . session()->getFlashdata('errUsername') . '
                                                  &lt;/div>';
                                        }
                                        ?>

                                    &lt;/div>


                                    &lt;div class="form-group">
                                        &lt;?php
                                        $isInvalidPassword = (session()->getFlashdata('errPassword')) ? 'is-invalid' : '';
                                        ?>
                                        &lt;input type="password" class="form-control form-control-user &lt;?= $isInvalidPassword ?>" name="password" id="password" placeholder="Inputkan Password">

                                        &lt;?php
                                        if (session()->getFlashdata('errPassword')) {
                                            echo '&lt;div id="validationServer03Feedback" class="invalid-feedback">
                                                    ' . session()->getFlashdata('errPassword') . '
                                                  &lt;/div>';
                                        }
                                        ?>

                                    &lt;/div>


                                    &lt;button type="submit" class="btn btn-primary btn-user btn-block"> Login &lt;/button>

                                &lt;/form>
                                &lt;hr>
                                &lt;div class="text-center">
                                    &lt;a class="small" href="&lt;?= base_url() ?>/login/registrasi">Buat Akun Baru&lt;/a>&lt;/a>
                                &lt;/div>
                            &lt;/div>
                        &lt;/div>
                    &lt;/div>
                &lt;/div>
            &lt;/div>


        &lt;/div>

    &lt;/div>

    &lt;!-- Bootstrap core JavaScript-->
    &lt;script src="&lt;?= base_url() ?>/sb-admin/vendor/jquery/jquery.min.js">&lt;/script>
    &lt;script src="&lt;?= base_url() ?>/sb-admin/vendor/bootstrap/js/bootstrap.bundle.min.js">&lt;/script>

    &lt;!-- Core plugin JavaScript-->
    &lt;script src="&lt;?= base_url() ?>/sb-admin/vendor/jquery-easing/jquery.easing.min.js">&lt;/script>

    &lt;!-- Custom scripts for all pages-->
    &lt;script src="&lt;?= base_url() ?>/sb-admin/js/sb-admin-2.min.js">&lt;/script>

&lt;/body>

&lt;/html></code></pre>



<p class="wp-block-paragraph">Selanjutnya silahkan setting terlebih dahulu template yang digunakan pada halaman login, untuk template silahkan download pada link <a href="https://startbootstrap.com/theme/sb-admin-2" target="_blank" rel="noreferrer noopener">TEMPLATE LOGIN</a> setelah terdownload silahkan simpan pada folder public/sb-admin</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="227" height="286" src="https://ngodingbareng.my.id/wp-content/uploads/2022/07/image-3.png" alt="" class="wp-image-788"/><figcaption>Struktur Folder Views Untuk Menyimpan Template sb-admin</figcaption></figure>



<p class="wp-block-paragraph">Maka tampilanya akan seperti gambar berikut :</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="704" height="436" src="https://ngodingbareng.my.id/wp-content/uploads/2022/07/image-4.png" alt="" class="wp-image-789" srcset="https://citanusantara.id/wp-content/uploads/2022/07/image-4.png 704w, https://citanusantara.id/wp-content/uploads/2022/07/image-4-300x186.png 300w" sizes="(max-width: 704px) 100vw, 704px" /><figcaption>Halaman Login Sistem</figcaption></figure>



<p class="wp-block-paragraph">Setelah tampilan berhasil kita buat sekarang kia akan membuat sebuah method cekUser pada Controller Login, tujuannya adalah ketika tombol Login di klik maka akan langsung diarahkan kedalam Controller Buku dan akan menampilkan view detail data buku, Code nya sebagai berikut :</p>



<pre class="wp-block-code"><code>    public function cekUser()
    {
        $username   = $this->request->getPost('username');
        $password   = $this->request->getPost('password');
        $validation = \Config\Services::validation();

        $valid      = $this->validate(&#91;
            'username'    => &#91;
                'label' => 'Username',
                'rules' => 'required',
                'errors' => &#91;
                    'required' => '{field} tidak boleh kosong'
                ]
            ],
            'password'    => &#91;
                'label' => 'Password',
                'rules' => 'required',
                'errors' => &#91;
                    'required' => '{field} tidak boleh kosong'
                ]
            ],

        ]);

        if (!$valid) {
            $sessError = &#91;
                'errUsername' => $validation->getError('username'),
                'errPassword' => $validation->getError('password'),
            ];
            session()->setFlashdata($sessError);
            return redirect()->to(site_url('login'));
        } else {
            $modelLogin = new ModelLogin();
            $username = $this->request->getVar('username');
            $password = $this->request->getVar('password');
            $dataUser = $modelLogin->where(&#91;
                'username' => $username,
            ])->first();

            if ($dataUser == null) {
                $sessError = &#91;
                    'errUsername' => 'Maaf username tidak terdaftar',
                ];
                session()->setFlashdata($sessError);
                return redirect()->to(site_url('login'));
            } else {
                $passwordUser = $dataUser&#91;'password'];
                if (password_verify($password, $passwordUser)) {
                    $level = $dataUser&#91;'level'];
                    $simpan_session = &#91;
                        'username' => $username,
                        'level'    => $level,
                    ];
                    session()->set($simpan_session);
                    return redirect()->to(base_url('buku'));
                } else {
                    $sessError = &#91;
                        'errPassword' => 'Password anda salah',
                    ];
                    session()->setFlashdata($sessError);
                    return redirect()->to(site_url('login'));
                }
            }
        }
    }</code></pre>



<p class="wp-block-paragraph">Pada method cekUser diatas ada proses Validasi yang digunakan untuk membuat proses login tidak dilakukan sembarangan dan bertujuan sebagai fitur keamanan pada codeigniter 4.</p>



<p class="wp-block-paragraph">Selanjutnya, Agar kita dapat mensimulasikannya silahkan tambahkan 1 data pada tabel member sebagai contoh.</p>



<figure class="wp-block-image alignright size-large"><img loading="lazy" decoding="async" width="1024" height="181" src="https://ngodingbareng.my.id/wp-content/uploads/2022/07/image-5-1024x181.png" alt="" class="wp-image-792" srcset="https://citanusantara.id/wp-content/uploads/2022/07/image-5-1024x181.png 1024w, https://citanusantara.id/wp-content/uploads/2022/07/image-5-300x53.png 300w, https://citanusantara.id/wp-content/uploads/2022/07/image-5-768x136.png 768w, https://citanusantara.id/wp-content/uploads/2022/07/image-5.png 1034w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Data yang ada pada tabel member</figcaption></figure>



<p class="wp-block-paragraph">Jika sudah silahkan di coba proses loginnya. Jika berhasil login maka tampilannya adalah sebagai berikut :</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="408" src="https://ngodingbareng.my.id/wp-content/uploads/2022/07/image-6-1024x408.png" alt="" class="wp-image-793" srcset="https://citanusantara.id/wp-content/uploads/2022/07/image-6-1024x408.png 1024w, https://citanusantara.id/wp-content/uploads/2022/07/image-6-300x120.png 300w, https://citanusantara.id/wp-content/uploads/2022/07/image-6-768x306.png 768w, https://citanusantara.id/wp-content/uploads/2022/07/image-6-1536x612.png 1536w, https://citanusantara.id/wp-content/uploads/2022/07/image-6.png 1646w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Tampilan halaman ketika berhasil login</figcaption></figure>



<p class="wp-block-paragraph">Untuk menambahkan tombol Logout disebelah kanan, silahkan tabahkan code berikut pada halaman Views/template/header </p>



<pre class="wp-block-code"><code>            &lt;div class="collapse navbar-collapse" id="navbar">
                &lt;ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
                    &lt;li class="nav-item">
                        &lt;a class="nav-link active" aria-current="page" href="/">Home&lt;/a>
                    &lt;/li>
                    &lt;li class="nav-item">
                        &lt;a class="nav-link" href="/halaman/aboutme">About Me&lt;/a>
                    &lt;/li>

                    &lt;?php if (session()->level == 1) : ?>
                        &lt;li class="nav-item ">
                            &lt;a class="nav-link" href="/buku/">Buku&lt;/a>
                        &lt;/li>
                    &lt;?php endif; ?>

                &lt;/ul>

                &lt;?php if (session()->level == 1) : ?>
                    Welcome &lt;?= session()->get('username'); ?> | &lt;a href="&lt;?= base_url() ?>/login/logout" class="btn"> Logout&lt;/a>
                &lt;?php endif; ?>
                &lt;?php if (session()->level != 1) : ?>
                    &lt;a href="&lt;?= base_url() ?>/login" class="btn btn-secondary"> Login&lt;/a>
                &lt;?php endif; ?>


            &lt;/div></code></pre>



<p class="wp-block-paragraph">Selanjutnya supaya tombol Logout bisa menjalankan fungsinya ketika di klik, silahkan tambahkan Method logout yang isinya sebagai berikut :</p>



<pre class="wp-block-code"><code>    public function logout()
    {
        session()->destroy();
        return redirect()->to('halaman');
    }</code></pre>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">777</post-id>	</item>
	</channel>
</rss>
