Showing posts with label Komputer. Show all posts
Showing posts with label Komputer. Show all posts
Konsep Dasar Technique for Order Preference by Similarity to Ideal Solution (TOPSIS)
Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) adalah salah satu metode pengambilan keputusan multikriteria yang pertama kali diperkenalkan oleh Yoon dan Hwang (1981). TOPSIS menggunakan prinsip bahwa alternatif yang terpilih harus mempunyai jarak terdekat dari solusi ideal positif dan terjauh dari solusi ideal negatif, yang bertujuan untuk menentukan kedekatan relatif dari suatu alternatif dengan solusi optimal. Solusi ideal positif didefinisikan sebagai jumlah dari seluruh nilai terbaik yang dapat dicapai untuk setiap atribut, sedangkan solusi negatif ideal terdiri dari seluruh nilai terburuk yang dicapai untuk setiap atribut.
Pemahaman Tentang Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) Sebagai Sistem Pendukung Keputusan
Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) merupakan salah satu teknik yang bisa diterapkan dalam sistem pendukung keputusan. Sistem Pendukung Keputusan atau Decision Support System (DSS) secara umum didefinisikan sebagai sebuah sistem yang mampu memberikan kemampuan pemecahan masalah maupun kemampuan pengkomunikasian untuk masalah semi terstruktur (Whetyningtyas, 2011). Pengertian Decision Support System menurut (Jogiyanto, 2001) adalah suatu sistem informasi untuk membantu manajer level menengah untuk proses pengambilan keputusan setengah terstruktur (semi structured) supaya lebih efektif dengan menggunakan model-model analitis dan data yang tersedia.
Istilah Sistem Pendukung Keputusan (SPK) mengacu pada suatu sistem yang memanfaatkan dukungan komputer dalam proses pengambilan keputusan. Untuk memberikan pengertian yang lebih maka ada beberapa definisi mengenai SPK oleh beberapa ahli (Hermawan, 2005). Menurut Dewanto (2015) sistem pendukung keputusan (SPK) merupakan suatu sistem yang berbasis komputer yang ditunjukan untuk membantu pengambil keputusan dengan memanfaatkan data dan model tertentu untuk memecahkan berbagai persoalan yang tidak terstruktur.
Sistem pendukung keputusan digunakan untuk mendeskripsikan sistem yang didesain untuk membantu manajer memecahkan masalah tertentu. Sistem pendukung keputusan (SPK) adalah bagian dari sistem informasi berbasis komputer termasuk sistem berbasis pengetahuan untuk mendukung pengambilan keputusan dalam suatu organisasi maupun perusahaan (Dewanto, 2015)
Dari beberapa para ahli di atas, dapat disimpulkan bahwa sistem pendukung keputusan merupakan suatu sistem informasi berbasis komputer yang dibuat untuk membantu memecahkan suatu masalah dalam pengambilan keputusan berupa alternatif pilihan menggunakan pemodelan analisis dan data yang ada.
Penerapan Technique for Order Preference by Similarity to Ideal Solution (TOPSIS)
Penerapan TOPSIS membantu perusahaan untuk memanfaatkan pendekatan analisis dan pengambilan keputusan yang lebih sistematis dan terstruktur. Dalam konteks bisnis yang semakin kompleks dan global, alat ini dapat memberikan nilai tambah dalam mencapai tujuan strategis dan menghadapi tantangan yang berkembang dengan cepat.
Penerapan Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) dalam dunia bisnis dan globalisasi memberikan berbagai manfaat, terutama dalam proses pengambilan keputusan. Berikut adalah beberapa manfaat utama dari penerapan TOPSIS dalam konteks bisnis dan globalisasi:
  1. TOPSIS membantu dalam memilih alternatif terbaik dari sejumlah opsi yang tersedia. Dalam konteks bisnis, ini dapat diterapkan pada pemilihan vendor, pemilihan proyek investasi, atau evaluasi strategi bisnis.
  2. TOPSIS dapat digunakan untuk menganalisis kinerja relatif dari setiap alternatif dalam hubungannya dengan kriteria yang ditetapkan. Ini membantu dalam evaluasi kualitas produk, layanan, atau keputusan bisnis.
  3. Dengan mempertimbangkan kriteria risiko dan keamanan, TOPSIS dapat membantu dalam pengambilan keputusan yang lebih informasional dan dapat mengurangi risiko yang terkait dengan keputusan bisnis.
  4. Dengan memilih alternatif yang paling mendekati solusi ideal, TOPSIS dapat meningkatkan efisiensi dan produktivitas dalam operasi bisnis. Misalnya, dalam pemilihan strategi operasional atau investasi dalam teknologi baru.
  5. Dalam lingkungan bisnis yang semakin terglobalisasi, TOPSIS dapat digunakan untuk memilih strategi ekspansi pasar, pemilihan mitra bisnis internasional, atau evaluasi proyek lintas batas.
  6. TOPSIS membantu dalam mengevaluasi proyek dan investasi dengan mempertimbangkan berbagai aspek yang relevan. Ini dapat membantu perusahaan dalam memilih proyek yang paling sesuai dengan tujuan bisnis dan kebijakan perusahaan.
  7. Penerapan TOPSIS memastikan bahwa keputusan bisnis didasarkan pada data dan analisis yang lebih objektif. Ini membantu dalam meningkatkan keputusan yang lebih baik dan mengurangi potensi keputusan yang bersifat subyektif.
Definisi Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) Menurut Para Ahli
Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) adalah salah satu metode dari model keputusan MADM. Metode TOPSIS menggunakan konsep dimana alternatif terpilih yang terbaik tidak hanya memiliki jarak terpendek dari solusi ideal positif, tetapi juga memiliki jarak terpanjang dari solusi ideal negatif (Elyza Gustru Wahyuni, 2017).
Menurut Dicky Nofriansyah (2017) menyatakan bahwa, TOPSIS merupakan salah satu metode yang digemari oleh peneliti di dalam merancang sebuah sistem pendukung keputusan, selain konsepnya sederhana tetapi kompleksitas dalam pemecahan masalah baik itu ditandai dengan konsep penyelesaian metode ini yaitu dengan memilih alternatif terbaik yang tidak hanya memiliki jarak terpendek dari solusi ideal positif tetapi juga memiliki jarak terpanjang dari solusi ideal negatif.
Menurut Simanjorang (2019) Metode TOPSIS adalah salahsatu metode yang bisa membantu proses pengambilan keputusan yang optimal untuk menyelesaikan masalah keputusan secara praktis. Hal ini disebabkan karena konsepnya sederhana dan mudah dipahami. Sejalan dengan pendapat Marlina, Yusnaeni, dan Indriyani (2017) TOPSIS merupakan suatu metode sistem pendukung keputusan (DSS) yang digunakan untuk memilih peringkat terbaik dengan nilai bobot tertinggi pada alternative yang dinilai. Penilaian dilakukan dengan menilai berdasarkan bobot nilai dari kriteria dan alternatif. Metode TOPSIS dapat menyelesaikan pengambilan keputusan secara praktis, karena konsepnya sederhana dan mudah dipahami, komputasinya efisien, serta memiliki kemampuan mengukur kinerja relatif dari alternatif-alternatif keputusan (Parhusip et al., 2011). Metode ini banyak digunakan untuk menyelesaikan pengambilan keputusan secara praktis karena konsepnya yang sederhana dan mudah dipahami, serta komputasinya efisien dan memiliki kemampuan mengukur kinerja relatif dari alternatif-alternatif keputusan.
Tujuan Technique for Order Preference by Similarity to Ideal Solution (TOPSIS)
TOPSIS bertujuan untuk menentukan solusi ideal positif dan solusi ideal negatif. Solusi ideal positif memaksimalkan kriteria manfaat dan meminimalkan kriteria biaya, sedangkan solusi ideal negatif memaksimalkan kriteria biaya dan meminimalkan kriteria manfaat (Fan dan Cheng, 2009). Kriteria manfaat merupakan kriteria dimana ketika nilai kriteria tersebutsemakin besar maka semakin layak pula untukdipilih. Sedangkan kriteriabiaya merupakan kebalikan dari kriteria manfaat, semakin kecil nilai darikriteria tersebut maka akan semakin layak untuk dipilih. Dalam metode TOPSIS, alternatif yang optimal adalah yang paling dekat dengan solusi idealpositif dan paling jauh dari solusi ideal negatif.
Kelemahan Dan Kelebihan Technique for Order Preference by Similarity to Ideal Solution (TOPSIS)
Dalam metode TOPSIS, dipertimbangkan adanya solusi ideal positif dan solusi ideal negatif. Solusi ideal positif merupakan nilai terbaik dari semua kriteria sedangkan solusi ideal negatif adalah nilai terburuk untuk tiap kriteria dari alternatif yang ada. Dengan adanya kedua solusi ini maka alternatif yang dipilih dalam metode TOPSIS merupakan alternatif yang memiliki jarak terdekat dengan solusi ideal positif dan jarak terjauh dengan solusi ideal negatif. Karena itulah maka dapat disimpulkan beberapa kelemahan dan kelebihan metode TOPSIS.
Kelemahan TOPSIS
  1. Belum adanya penentuan bobot prioritas yang menjadi prioritas hitungan terhadap kriteria, yang berguna untuk meningkatkan validitas nilai bobot perhitungan kriteria. Maka dengan alasan ini, metode ini dapat dikombinasikan misalnya dengan metode AHP agar menghasilkan output atau keputusan yang lebih maksimal
  2. Belum adanya bentuk linguistik untuk penilaian alternatif terhadap kriteria, biasanya bentuk linguistik ini diinterpretasikan dalam sebuah bilangan fuzzy
  3. Belum adanya mediator seperti hirarki jika diproses secara mandiri maka dalam ketepatan pengambilan keputusan cenderung belum menghasilkan keputusan yang sempurna
  4. Metode TOPSIS ini dapat digunakan dalam menentukan perangkingan alternatif dengan memperhitungkan solusi ideal dari suatu masalah dan penentuan bobot setiap kriteria. Namun, kurang baik jika digunakan dalam mendapatkan bobot yang memperhitungkan hubungan antara kriteria. Walaupun dapat dilakukan dengan pairwase comparison, tetapi membutuhkan matriks dan perhitungan yang lebih rumit. Oleh karena itu, dilakukan penggabungan dengan metode lain seperti ANP (Analytic Network Process) dalam mengatasi masalah pembobotan tersebut.
  5. Pada proses yang menggunakan metode TOPSIS, perangkingan dan pembobotan kriteria adalah memiliki nilai yang telah pasti. Padahal, dalam aplikasinya di kehidupan nyata, terdapat informasi yang tidak lengkap atau informasi yang dibutuhkan tidak tersedia. Contoh penyebab informasi yang tidak lengkap tersebut adalah karena adanya penilaian dari manusia yang seringkali bersifat tidak pasti/kabur (fuzzy) dan tidak dapat mengestimasikan perangkingan dalam data numerik yang pasti. Ketidakpastian ini merupakan sesuatu yang tidak dapat diatasi jika menggunakan metode TOPSIS, kecuali jika dilakukan perhitungan algoritma lebih lanjut dalam perumusan metode TOPSIS tersebut.
  6. Metode TOPSIS menentukan solusi berdasarkan jarak terpendek menuju solusi ideal dan jarak terbesar dari solusi negatif yang ideal. Namun, metode ini tidak mempertimbangkan kepentingan relatif (relative importance) dari masing-masing jarak tersebut.
  7. Pada metode TOPSIS, seringkali digunakan asumsi pada tingkat kepentingan relatif masing-masing respon dan digunakan kombinasi dengan metode lain untuk menyelesaikan asumsi tersebut. Contohnya adalah dengan menggunakan metode AHP (Analytical Hierarchy Process) atau ANP (Analytic Network Process) untuk memperoleh nilai bobot yang mewakili tingkat kepentingan relatif masing-masing kriteria.
  8. Pada metode TOPSIS, alternatif dengan ranking tertinggi merupakan solusi yang terbaik, namun belum tentu ranking tertinggi tersebut adalah yang terdekat dari solusi ideal. Sehingga perlu dilakukan perhitungan lagi untuk memastikannya.
Kelebihan TOPSIS
  1. Konsepnya sederhana dan mudah dipahami, kesederhanaan ini dilihat dari alur proses metode TOPSIS yang tidak begitu rumit. Karena menggunakan indikator kriteria dan variabel alternatif sebagai pembantu untuk menentukan keputusan
  2. Komputasinya efisien, perhitungan komputasinya lebih efisien dan dan cepat
  3. Mampu dijadikan sebagai pengukur kinerja alternatif dan juga alternatif keputusan dalam sebuah bentuk output komputasi yang sederhana.
  4. Dapat digunakan sebagai metode pengambilan keputusan yang lebih cepat.
Tahapan Perhitungan Technique for Order Preference by Similarity to Ideal Solution (TOPSIS)
Algoritma Penyelesaian masalah MADM dengan TOPSIS (Kusumadewi, S. Hartati, S. Harjoko, A. Wardoyo, 2004):
  • Menentukan alternatif yang pada penelitian ini adalah merek dan model mobil bekas kemudian menormalisasi setiap nilai alternatif dan matrix ternormalisasi terbobot.
  • Membuat rating pada masing-masing alternatif pada masing-masing kriteria dengan rumus sebagai berikut: 
  •  
  • Keterangan:
    ij    = Nilai Normalisasi Kriteria ke i.
    Xij    = Hasil pertimbangan berdasarkan kriteria ke i.
     
  • Membuat matrix normalisasi terbobot.
  • Menentukan nilai normalisasi maksimum dan minimum.
  • Menghitung Sparasi Ideal Positif dengan menggunakan persamaan berikut ini:
  •  
  • Keterangan:
    Di+     = Sparasi ideal positif
    yi+     = Nilai Normaliasasi Maksimum
    yij    = Normalisasi Terbobot
     
  • Hasil perhitungan untuk nilai normalisasi maksimum dikurangi normalisasi terbobot

  • Hasil perhitungan untuk nilai normalisasi maksimum dikurangi normalisasi terbobot pangkat 2 (dua) dengan persamaan

  • Hasil perhitungan untuk nilai akar dari jumlah akumulasi normalisasi maksimum dikurangi normalisasi terbobot pangkat 2 (dua) pada persamaan

  • Menghitung Sparasi Ideal negatif dengan menggunakan persamaan berikut ini:
  •  
  • Keterangan:
    Di-     = Sparasi ideal negatif
    yi-     = Nilai Normaliasasi minimum
    yij    = Normalisasi Terbobot
  • Hasil perhitungan untuk nilai normalisasi terbobot dikurangi normalisasi minimum

  • Hasil perhitungan untuk nilai normalisasi minimum dikurangi normalisasi terbobot pangkat 2 (dua) dengan persamaan

  • Hasil perhitungan untuk nilai akar dari jumlah akumulasi normalisasi minimum dikurangi normalisasi terbobot pangkat 2 (dua) pada persamaan

  • Menghitung nilai preferensi dari setiap alternatif berdasarkan solusi ideal positif dan solusi ideal negative.
  • Data solusi ideal positif dan negative di atas kemudian dihitung menggunakan persamaan berikut ini:
  •  
  • Keterangan:
    Vi    = Nilai preferensi untuk alternatif ke i
    D-    = Solusi Ideal negative
    D+    = Solusi Ideal positif
     
  • Melakukan perankingan berdasarkan hasil perhitungan nilai preferensi.
Penutup
TOPSIS merupakan suatu metode sistem pendukung keputusan (DSS) yang digunakan untuk memilih peringkat terbaik dengan nilai bobot tertinggi pada alternative yang dinilai. Penilaian dilakukan dengan menilai berdasarkan bobot nilai dari kriteria dan alternatif. Namun, metode ini tidak mempertimbangkan kepentingan relatif (relative importance) dari masing-masing jarak tersebut. Oleh sebab itu solusi dari permasalahan kekurangan metode TOPSIS dapat ditutupi dengan batasan yang jelas dalam menentukan jarak penilaian pada masing-masing kriteria yang digunakan. Pada metode TOPSIS, seringkali digunakan asumsi pada tingkat kepentingan relatif masing-masing respon dan digunakan kombinasi dengan metode lain untuk menyelesaikan asumsi tersebut. Contohnya adalah dengan menggunakan metode AHP (Analytical Hierarchy Process) atau ANP (Analytic Network Process) untuk memperoleh nilai bobot yang mewakili tingkat kepentingan relatif masing-masing kriteria.
Sumber Pustaka
  1. Amida, S. N., & Kristiana, T. (2019). Sistem Pendukung Keputusan Penilaian Kinerja Pegawai Dengan Menggunakan Metode Topsis. JSAI (Journal Scientific and Applied Informatics), 2(3), 193–201. https://doi.org/10.36085/jsai.v2i3.415
  2. Dicky Nofriansyah, S. D. (2017). Multi Criteria Decision Making (MCDM): pada sistem pendukung keputusan. Deepublish.
  3. Elyza Gustru Wahyuni, A. T. A. (2017). Sistem Pendukung Keputusan Penerimaan Pegawai Dengan Metode Topsis. Jurnal Sains, Teknologi Dan Industri, 14(2).
  4. Fan, C. K., & Cheng, S. W. (2009). Using Analytic Hierarchy Process Method and Technique for Order Preference by Similarity to Ideal Solution to Evaluate Curriculum in Department of Risk Management and Insurance. 19(1), 1–8.
  5. Hakim, L. (2019). Sistem Pendukung Keputusan Penilaian Kinerja Karyawan Menggunakan Metode Topsis Pada PT.Karunia Berkat Alam Demak.
  6. Hermawan, J. (2005). Membangun Decision Support System. Andi.
  7. Marlina, M., Yusnaeni, W., & Indriyani, N. (2017). Sistem Pendukung Keputusan Pemilihan Siswa Yang Berhak Mendapatkan Beasiswa Dengan Metode Topsis. Jurnal Techno Nusa Mandiri, 14(2), 147–152.
  8. Mulyanto, A. (2009). Sistem Informasi Konsep dan Aplikasi. Pustaka Pelajar.
  9. Nurhayati, S. (2017). Sistem Penilaian Kinerja Karyawan Menggunakan Metode TOPSIS pada PT XYZ. Prosiding Saintiks FTIK UNIKOM, 2, 25–28.
  10. Palasara, N., & Baidawi, T. (2018). Penerapan Sistem Pendukung Keputusan Pada Penilaian Karyawan Menggunakan Metode Technique for Order Preference by Similarity to Ideal Solution ( TOPSIS ).
  11. Pressman, R. (2001). Software Engineering: A Practitioner’s Approach, Fifth Ed. McGraw-Hill Book Company.
  12. Putra, K. D., Lina, S., Sitio, M., Studi, P., Informatika, T., Teknik, F., Pamulang, U., Selatan-indonesia, T., & Karyawan, P. K. (2021). Perancangan Sistem Pendukung Berbasis Desktop Menggunakan Kombinasi Metode SMART-TOPSIS. 5(3), 240–249.
  13. Rahman, A. K., & Suwartane, I. G. A. (2020). Rancang Bangun Sistem Pendukung Keputusan Penilaian Karyawan Terbaik Dengan Metode Tehcnique For Order Preference By Similarity To Ideal Solution (TOPSIS) Berbasis Web. 4(1).
  14. Sachdeva. (2009). Multi-Factor Mode Critically Analysis Using TOPSIS. International Journal of Industrial Enineering, 5(8).
  15. Simanjorang, R. M. (2019). Sistem Pendukung Keputusan Pemilihan Dosen Terbaik dengan menggunakan Metode TOPSIS (Studi Kasus: STMIK Pelita Nusantara Medan). Jurnal STMIK Pelita Nusantara Medan, 4(1), 10–15.
  16. Whetyningtyas, A. (2011). Peranan Decision Support System (DSS) Bagi Manajemen Selaku Decision Maker. Jurnal Analisis Manajemen, 5(1), 102–108.




Login Wallpaper

Komponen penting dalan aplikasi Sistem Informasi Manajemen Rumah Sakit (SIMRS) berbasis web salah satunya adalah form login serta proses validasi akses user. Pada umumnya form login akan tampil pada saat pertama kali user melakukan akses ke dalam aplikasi tersebut kemudian mengisi username, password dan captcha (jika diperlukan). Sistem kemudian melakukan validasi, memeriksa apakah kombinasi ketiga data tersebut sudah sesuai dengan ketentuan atau belum. Apabila tidak memenuhi prasyarat maka sistem akan menampilkan notifikasi kegagalan akses pada user. Sebaliknya, apabila data sudah sesuai maka sistem akan memberikan sesi akses pada user tersebut sesuai dengan haknya.

Sebagai catatan, ini adalah artikel revisi dari sebelumnya. Saya telah melakukan pembaharuan agar SIMRS yang akan kita kembangkan nanti lebih mudah disesuaikan dengan keinginan masing-masing. Sebelumnya kita sudah belajar mengenai cara membuat template aplikasi web untuk SIMRS. Skarang kita akan menggunakan template tersebut sebagai halaman utama aplikasi. Silahkan kunjungi postingan tersebut dan download source code nya

Jangan khawatir karena saya akan menjelaskan setiap komponennya secara berkelanjutan. Untuk kesempatan kali ini kita akan menambahkan halaman login, proses validasi akses dan bagaimana membatasi pengguna SIMRS sehingga tidak semuanya bisa mengakses halaman utama yang tersedia. Secara umum perhatikan flowmap berikut ini:


Penjelasan:

  1. Pengguna masuk ke halaman form login pertama kali
  2. Pengguna mengisi email dan password
  3. Pengguna memilih tombol login dan sistem melakukan validasi
  4. Apabila kombinasi email dan password salah maka sistem menampilkan notifikasi gagal.
  5. apabila kombinasi email dan password benar maka sistem menampilkan notifikasi berhasil.

Langsung saja untuk langkah pembuatannya silahkan perhatikan baik-baik.

1. Membuat database dan tabel akses

Langkah pertama adalah membuat sebuah tabel pada database MySql dengan properti sebagai berikut:

Anda bisa membuat database susuai keinginan anda. Dalam postingan kali ini saya membuat database dengan nama "belajar_simrs" kemudian membuat tabel dengan nama "akes". Untuk penjelasan masing-masing kolom/atribut pada tabel diatas diantaranya adalah:

  1. id_akses : Adalah kolom kunci utama dengan nilai unik untuk mewakili data akses yang dibuat.
  2. nama : Adalah nama pengguna/user yang akan melakukan login, tipenya "text" untuk antisipasi jika nama penggunannya panjang.
  3. kontak : Adalah informasi tambahan untuk nomor kontak pengguna, kolom ini bisa dikosongkan untuk antisipasi jika pengguna tidak memiliki nomor kontak.
  4. email : Adalah informasi alamat email pengguna yang akan digunakan sebagai salah satu parameter login nanti. Disini type nya text karena untuk antisipasi jika alamat emailnya terlalu panjang.
  5. password : Adalah informasi kunci rahasia yang akan digunakan oleh pengguna pada saat melakukan login nanti.
  6. akses : Adalah informasi hak akses atau entitas yang melakukan login nanti misalnya Admin, Apoteker, Dokter dll.

Silahkan buat satu buah record sebagai bahan percobaan nanti pada saat melakukan validasi login. Disini saya contohkan untuk pengisiannya.

Penting:

Untuk kolom bagian password, silahkan isi dengan nilai yang sudah di enkripsi ke md5. Caranya silahkan masuk ke web has generator di sini, kemudian masukan passwordnya di kolom textarea yang sudah tersedia dan klik generate. nanti akan muncul nilai md5 hash. Copy md5 hash tersebut ke kolom password pada tabel yang sudah dibuat tadi.

2. Membuat halaman form login

Setelah mempersiapkan database untuk validasinya, sekarang kita buat halaman form login. Pada bagian utama directory project yang sudah didownload tadi, silahkan buat sebuah file dengan nama Login.php kemudian ketik source code berikut ini:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
    <?php session_start(); ?>
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <meta content="width=device-width, initial-scale=1.0" name="viewport">
            <title>SIMRS</title>
            <meta content="Gambaran Umum Tentang Aplikasi" name="description">
            <meta content="Kata Kunci Jika Ada Pencarian" name="keywords">
            <!-- Favicons -->
            <link href="assets/img/logo.png" rel="icon">
            <link href="assets/img/logo.png" rel="apple-touch-icon">
            <!-- Google Fonts -->
            <link href="assets/fonts/fonts.css" rel="stylesheet">
            <!-- Vendor CSS Files -->
            <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
            <link href="vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
            <link href="vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
            <link href="vendor/quill/quill.snow.css" rel="stylesheet">
            <link href="vendor/quill/quill.bubble.css" rel="stylesheet">
            <link href="vendor/remixicon/remixicon.css" rel="stylesheet">
            <link href="vendor/simple-datatables/style.css" rel="stylesheet">
            <!-- Template Main CSS File -->
            <link href="assets/css/style.css" rel="stylesheet">
            <link href="vendor/mdb-ui-kit/css/mdb.min.css" rel="stylesheet">
            <script src="vendor/jquery/dist/jquery.min.js" type="text/javascript"></script>
            <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/driver.js@1.0.1/dist/driver.css"/>
            <!-- =======================================================
            * Template Name: NiceAdmin - v2.3.1
            * Template URL: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/
            * Author: BootstrapMade.com
            * License: https://bootstrapmade.com/license/
            ======================================================== -->
        </head>
        <body>
            <main class="login_background">
                <div class="container">
                    <section class="section register min-vh-100 d-flex flex-column align-items-center justify-content-center py-4">
                        <div class="container">
                            <div class="row justify-content-center">
                                <div class="col-lg-4 col-md-6 d-flex flex-column align-items-center justify-content-center">
                                    <div class="d-flex justify-content-center py-4">
                                        <img src="assets/img/logo.png" alt="" width="100px"><br>
                                    </div>
                                    <div class="card mb-3">
                                        <div class="card-body">
                                            <div class="pt-4 pb-2">
                                                <h5 class="card-title text-center pb-0 fs-4">Login Ke Akun Anda</h5>
                                                <p class="text-center small">Masukan Email Dan Password Untuk Melakukan Login</p>
                                            </div>
                                            <form action="_Page/Login/ProsesLogin.php" class="row g-3" method="POST">
                                                <div class="col-12">
                                                    <label for="email" class="form-label">Email</label>
                                                    <div class="input-group has-validation">
                                                        <span class="input-group-text" id="inputGroupPrepend">@</span>
                                                        <input type="email" name="email" class="form-control" id="email" required>
                                                        <div class="invalid-feedback">Please enter your username.</div>
                                                    </div>
                                                </div>
                                                <div class="col-12">
                                                    <label for="password" class="form-label">Password</label>
                                                    <input type="password" name="password" class="form-control" id="password" required>
                                                    <div class="invalid-feedback">Please enter your password!</div>
                                                    <small class="credit">
                                                        <div class="form-check">
                                                            <input class="form-check-input" type="checkbox" value="Tampilkan" id="TampilkanPassword2" name="TampilkanPassword2">
                                                            <label class="form-check-label" for="TampilkanPassword2">
                                                                Tampilkan Password
                                                            </label>
                                                        </div>
                                                    </small>
                                                </div>
                                                <div class="col-12" id="NotifikasiLogin">
                                                    <?php
                                                        if(empty($_SESSION ["SesiNotifikasi"])){
                                                            echo "Pastikan email dan password sudah benar.";
                                                        }else{
                                                            $Notifikasi=$_SESSION ["SesiNotifikasi"];
                                                            echo '<span class="text-danger">'.$Notifikasi.'</span>';
                                                        }
                                                        unset($_SESSION['SesiNotifikasi']);
                                                    ?>
     
                                                </div>
                                                <div class="col-12">
                                                    <button class="btn btn-primary w-100" type="submit" id="TombolLogin">Login</button>
                                                </div>
                                            </form>
                                        </div>
                                    </div>
                                    <div class="credits">
                                        <small>
                                            <div class="copyright text-white">
                                                &copy; Copyright <strong><span>SIMRS</span></strong>. All Rights Reserved 2023
                                            </div>
                                            <div class="credits">
                                                Designed by <a href="" class="text-light">Nama Kamu</a>
                                            </div>
                                        </small>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </section>
                </div>
            </main>
        </body>
    </html>

3. Buat Koneksi Database

Untuk menghubungkan database dengan aplikasi yang akan kita buat maka baiknya kita buat sebuah file koneksi yang bisa kita panggil nantinya. Silahkan buat sebuah file pada folder "_Config" yang sudah tersedia pada project yang  dengan nama file Connection.php

Silahkan ketik source code berikut ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
    //Ini adalah halaman untuk melakukan konfigurasi database
    $servername = "localhost";
    $username = "root";
    $password = "";
    $db = "belajar_simrs";
    // Create connection
    $Conn = new mysqli($servername, $username, $password, $db);
    // Check connection
    if ($Conn->connect_error) {
        die("Connection failed: " . $Conn->connect_error);
    }
?>

Keterangan:
  • Baris ke 3 pada variabel $servername diisi dengan nama server, secara default bernilai "localhost".
  • Baris ke 4 username secara default pada localhost bernilai "root"
  • Baris ke 5 password secara default pada localhost bernilai null.
  • Baris ke 6 variabel $db diisi dengan nama databasenya.

4. Validasi Akses Login

Form login yang sudah dibuat tadi akan mengarah ke sebuah file pada directory _Page/Login/Login.php dimana berfungsi untuk melakukan validasi login. Silahkan ketik source code berikut ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
    session_start();
    include "../../_Config/Connection.php";
    //Validasi keberadaan email dan password
    if(empty($_POST["email"])){
        $_SESSION ["SesiNotifikasi"]="Email Tidak Boleh Kosong";
        header("Location:../../Login.php");
    }else{
        if(empty($_POST["password"])){
            $_SESSION ["SesiNotifikasi"]="Password Tidak Boleh Kosong";
            header("Location:../../Login.php");
        }else{
            $email=$_POST["email"];
            $password=$_POST["password"];
            $passwordMd5=md5($password);
            //QUERY MEMANGGIL DATA DARI DATABASE Akses
            $Qry=mysqli_query($Conn,"SELECT*FROM akses WHERE email='$email' AND password='$passwordMd5'")or die(mysqli_error($Conn));
            $DataAkses = mysqli_fetch_array($Qry);
            if(!empty($DataAkses["id_akses"])){
                $_SESSION ["SesiIdAkses"]=$DataAkses["id_akses"];
                $_SESSION ["SesiNotifikasi"]="Login Berhasil";
                header("Location:../../index.php");
            }else{
                $_SESSION ["SesiNotifikasi"]="Login gagal karena kombinasi email dan password tidak valid";
                header("Location:../../Login.php");
            }
        }
    }	
?>

Keterangan :
  1. Baris ke 2 berfungsi untuk menyatakan dimulainya menangkap variabel SESSION.
  2. Baris ke 3 berfungsi untuk memanggil proses koneksi dengan database.
  3. Baris ke 6-7 artinya jika email kosong maka sistem akan melakukan redirect ke halaman login kembali dengan notifikasinya.
  4. Baris ke 10-11 artinya jika paassword kosong maka sistem akan melakukan redirect ke halaman login kembali dengan notifikasinya.
  5. Baris ke 13-14 artinya menyatakan variabel email dan password sesuai data yang ditangkap tadi.
  6. Baris ke 15 artinya mengubah nilai password menjadi format md5.
  7. Baris ke 19 menyatakan jika email dan password tidak ditemukan pada database.
  8. Baris ke 20, 21 dan 22 menyatakan jika email dan password valid dan ada pada database maka sistem akan menampilkan notifikasi dan mengarahkannya pada halaman index.php
Agar notifikasi ketika login gagal muncul pada halaman login, maka kita buat beberapa baris source code pada halaman form Login.php yang sudah kita buat sebelumnya. Silahkan ubah file Login.php dengan source code berikut:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
<?php session_start(); ?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta content="width=device-width, initial-scale=1.0" name="viewport">
        <title>SIMRS</title>
        <meta content="Gambaran Umum Tentang Aplikasi" name="description">
        <meta content="Kata Kunci Jika Ada Pencarian" name="keywords">
        <!-- Favicons -->
        <link href="assets/img/logo.png" rel="icon">
        <link href="assets/img/logo.png" rel="apple-touch-icon">
        <!-- Google Fonts -->
        <link href="assets/fonts/fonts.css" rel="stylesheet">
        <!-- Vendor CSS Files -->
        <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
        <link href="vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
        <link href="vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
        <link href="vendor/quill/quill.snow.css" rel="stylesheet">
        <link href="vendor/quill/quill.bubble.css" rel="stylesheet">
        <link href="vendor/remixicon/remixicon.css" rel="stylesheet">
        <link href="vendor/simple-datatables/style.css" rel="stylesheet">
        <!-- Template Main CSS File -->
        <link href="assets/css/style.css" rel="stylesheet">
        <link href="vendor/mdb-ui-kit/css/mdb.min.css" rel="stylesheet">
        <script src="vendor/jquery/dist/jquery.min.js" type="text/javascript"></script>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/driver.js@1.0.1/dist/driver.css"/>
        <!-- =======================================================
        * Template Name: NiceAdmin - v2.3.1
        * Template URL: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/
        * Author: BootstrapMade.com
        * License: https://bootstrapmade.com/license/
        ======================================================== -->
    </head>
    <body>
        <main class="login_background">
            <div class="container">
                <section class="section register min-vh-100 d-flex flex-column align-items-center justify-content-center py-4">
                    <div class="container">
                        <div class="row justify-content-center">
                            <div class="col-lg-4 col-md-6 d-flex flex-column align-items-center justify-content-center">
                                <div class="d-flex justify-content-center py-4">
                                    <img src="assets/img/logo.png" alt="" width="100px"><br>
                                </div>
                                <div class="card mb-3">
                                    <div class="card-body">
                                        <div class="pt-4 pb-2">
                                            <h5 class="card-title text-center pb-0 fs-4">Login Ke Akun Anda</h5>
                                            <p class="text-center small">Masukan Email Dan Password Untuk Melakukan Login</p>
                                        </div>
                                        <form action="_Page/Login/ProsesLogin.php" class="row g-3" method="POST">
                                            <div class="col-12">
                                                <label for="email" class="form-label">Email</label>
                                                <div class="input-group has-validation">
                                                    <span class="input-group-text" id="inputGroupPrepend">@</span>
                                                    <input type="email" name="email" class="form-control" id="email" required>
                                                    <div class="invalid-feedback">Please enter your username.</div>
                                                </div>
                                            </div>
                                            <div class="col-12">
                                                <label for="password" class="form-label">Password</label>
                                                <input type="password" name="password" class="form-control" id="password" required>
                                                <div class="invalid-feedback">Please enter your password!</div>
                                                <small class="credit">
                                                    <div class="form-check">
                                                        <input class="form-check-input" type="checkbox" value="Tampilkan" id="TampilkanPassword2" name="TampilkanPassword2">
                                                        <label class="form-check-label" for="TampilkanPassword2">
                                                            Tampilkan Password
                                                        </label>
                                                    </div>
                                                </small>
                                            </div>
                                            <div class="col-12" id="NotifikasiLogin">
                                                <?php
                                                    if(empty($_SESSION ["SesiNotifikasi"])){
                                                        echo "Pastikan email dan password sudah benar.";
                                                    }else{
                                                        $Notifikasi=$_SESSION ["SesiNotifikasi"];
                                                        echo '<span class="text-danger">'.$Notifikasi.'</span>';
                                                    }
                                                    unset($_SESSION['SesiNotifikasi']);
                                                ?>
                                                
                                            </div>
                                            <div class="col-12">
                                                <button class="btn btn-primary w-100" type="submit" id="TombolLogin">Login</button>
                                            </div>
                                        </form>
                                    </div>
                                </div>
                                <div class="credits">
                                    <small>
                                        <div class="copyright text-white">
                                            &copy; Copyright <strong><span>SIMRS</span></strong>. All Rights Reserved 2023
                                        </div>
                                        <div class="credits">
                                            Designed by <a href="" class="text-light">Nama Kamu</a>
                                        </div>
                                    </small>
                                </div>
                            </div>
                        </div>
                    </div>
                </section>
            </div>
        </main>
    </body>
</html>

5. Pembatasan Akses Halaman Utama

Agar pengguna tidak langsung diarahkan ke halaman utama (index.php) saat pertama kali menjalankan web maka dibutuhkan validasi akses pada halaman index.php itu sendiri. Silahkan buat file Session.php pada folder "_Config" dan ketik source code berikut ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    //Menangkap seasson kemudian menampilkannya
    session_start();
    if(empty($_SESSION["SesiIdAkses"])){
        header("Location:Login.php");
    }else{
        $SessionIdAkses=$_SESSION ["SesiIdAkses"];
        //Inisiasi data akses dari database
        $QuerySessionAkses = mysqli_query($Conn,"SELECT * FROM akses WHERE id_akses='$SessionIdAkses'")or die(mysqli_error($Conn));
        $DataSessionAkses = mysqli_fetch_array($QuerySessionAkses);
        //Apabila data akses ada
        if(!empty($DataSessionAkses['id_akses'])){
            $SessionNama= $DataSessionAkses['nama'];
            $SessionEmail= $DataSessionAkses['email'];
            $SessionKontak= $DataSessionAkses['kontak'];
            $SessionAkses= $DataSessionAkses['akses'];
        }else{
            header("Location:Login.php");
        }
    }
?>

6. Proses Logout

Untuk menghapus sesi login ketika pengguna sudah login dan berada pada halaman utama (index.php) kita buat tombol logout dan prosesnya. Silahkan ubah file menu pada directory "_Partial/Menu.php" menjadi sebagai berikut:

  1. <aside id="sidebar" class="sidebar menu_background">
  2. <ul class="sidebar-nav" id="sidebar-nav">
  3. <li class="nav-item">
  4. <a class="nav-link collapsed" href="index.php">
  5. <i class="bi bi-grid"></i>
  6. <span>Dashboard</span>
  7. </a>
  8. </li>
  9. <li class="nav-item">
  10. <a class="nav-link" href="index.php">
  11. <i class="bi bi-key"></i>
  12. <span>Akses</span>
  13. </a>
  14. </li>
  15. <li class="nav-item">
  16. <a class="nav-link" href="index.php">
  17. <i class="bi bi-people"></i>
  18. <span>Pasien</span>
  19. </a>
  20. </li>
  21. <li class="nav-item">
  22. <a class="nav-link" href="index.php">
  23. <i class="bi bi-file-earmark-medical-fill"></i>
  24. <span>Kunjungan</span>
  25. </a>
  26. </li>
  27. <li class="nav-item">
  28. <a class="nav-link" href="index.php">
  29. <i class="bi bi-coin"></i>
  30. <span>Keuangan</span>
  31. </a>
  32. </li>
  33. <li class="nav-item">
  34. <a class="nav-link" href="index.php">
  35. <i class="bi bi-capsule-pill"></i>
  36. <span>Apotek</span>
  37. </a>
  38. </li>
  39. <li class="nav-item">
  40. <a class="nav-link" href="index.php">
  41. <i class="bi bi-file-medical"></i>
  42. <span>Laboratorium</span>
  43. </a>
  44. </li>
  45. <li class="nav-item">
  46. <a class="nav-link" href="index.php">
  47. <i class="bi bi-camera"></i>
  48. <span>Radiologi</span>
  49. </a>
  50. </li>
  51. <li class="nav-item">
  52. <a class="nav-link" href="index.php">
  53. <i class="bi bi-file-bar-graph"></i>
  54. <span>Laporan</span>
  55. </a>
  56. </li>
  57. <li class="nav-item">
  58. <a class="nav-link" href="index.php">
  59. <i class="bi bi-gear"></i>
  60. <span>Pengaturan</span>
  61. </a>
  62. </li>
  63. <li class="nav-item">
  64. <a class="nav-link" href="_Page/Logout/Logout.php">
  65. <i class="bi bi-box-arrow-in-left"></i>
  66. <span>Keluar</span>
  67. </a>
  68. </li>
  69. </ul>
  70. </aside>
  71.  

Buat juga proses logout dengan membuat file pada directory "_Page/Logout/Logout.php" sebagai berikut:

  1. <?php
  2. session_destroy();
  3. session_unset();
  4. session_start();
  5. unset($_SESSION['SesiIdAkses']);
  6. $_SESSION ["SesiIdAkses"]="";
  7. unset($_SESSION['SesiNotifikasi']);
  8. $_SESSION ["SesiNotifikasi"]="";
  9. header('Location:../../Login.php');
  10. ?>
7. Membatasi Akses Halaman Utama
Langkah terakhir adalah, ketika kita ingin membatasi akses pengguna pada halaman utama aplikasi. Ketika pengguna belum melakukan akses login maka sistem akan mengarahkan ke halaman form login, sebaliknya ketika user sudah melakukan login maka sistem akan mengarahkan pada halaman utama dan menampilkan notifikasi. Silahkan lakukan perubahan pada file index.php menjadi seperti berikut:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <?php
  5. include "_Config/Connection.php";
  6. include "_Config/Session.php";
  7. include "_Partial/Head.php";
  8. ?>
  9. </head>
  10. <body>
  11. <?php
  12. include "_Partial/Navbar.php";
  13. include "_Partial/Menu.php";
  14. ?>
  15. <main id="main" class="main">
  16. <?php
  17. include "_Partial/PageTitle.php";
  18. include "_Partial/RoutingPage.php";
  19. include "_Partial/Modal.php";
  20. ?>
  21. </main>
  22. <?php
  23. include "_Partial/Copyright.php";
  24. include "_Partial/BackToTop.php";
  25. include "_Partial/FooterJs.php";
  26. include "_Partial/RoutingJs.php";
  27. include "_Partial/RoutingSwal.php";
  28. ?>
  29. </body>
  30. </html>
8. Test Program

Apabila kita coba maka programnya akan berjalan seperti berikut: