Membuat login php mysqli

Membuat form login php – Siapa yang tidak tau tentang form login atau halaman login ini ? pasti semua sudah tau karena halaman login merupakan salah satu sistem yang cukup penting dalam membuat sebuah website khususnya sebagai salah satu sistem keamanan. Ya dengan menggunakan form atau halaman login ini kita bisa menyaring siapa saja yang boleh masuk dan tidak boleh masuk website kita. Lalu bagaimana cara membuatnya? saya tidak bilang ini mudah karena saya sendiri mencoba membuatnya membutuhkan waktu cukup lama ( maklum masih amatiran 😀 ) tapi juga tidak begitu sulit karena banyak tutorial yang sudah menjabarkan dan menjelaskan untuk membuat halaman login dengan PHP.

Sebagai hasil penelitian, analisi dan praktek yang saya lakukan hehehehe, saya bagi sedikit yang sudah saya ketahui ini berikut source code nya.

Pada dasarnya sistem login bekerja dengan cara mencocokan data yang sudah kita inputkan yaitu username dan password dengan data yang sudah tersimpan di database (yaitu pada table users), kalau ditemukan berarti valid, jika tidak berarti gagal. simple bukan teorinya 😀 tapi source code-nya? saya yakin kawan-kawan pasti akan sedih melihatnya ahahaha.

Baik mari kita mulai saja :
1. Buatlah folder bernama “login” di dalam htdocs.
2. Buatlah database dengan nama “login”.
3. Download source code simple login lalu extract.
4. Pindahkan isi dari folder simple login ke dalam folder login yang sudah kita buat sebelumnya.
5. Import file login.sql kedalam database login yang sudah kita buat juga sebelumya.

Dari sistem login yang saya buat bertumpu pada 3 file utama
– load.php
– check-login.php dan
– paging.php untuk masalah paging ini kawan-kawan bisa baca di Cara Membuat Web Dinamis dengan PHP

lalu bagaimana dengan file yang lain? selebihnya adalah tambahan saja 😀

load.php
File ini saya isi dengan fungsi-fungsi dan variable tambahan untuk membantu pengkodean dilangkah selanjutnya berikut contoh kode yang saya buat

 [gists]//gist.github.com/wichaksono/79f72d9b176f6142d134059b7d26623e[/gists]

define adalah syntax untuk mendefinisikan, seperti halnya $variable namun define bersifat constant jadi nilainya tidak bisa berubah atau redefine, meskipun ditulis kembali di line berikutnya. jadi lebih aman untuk variable yang bernilai statis.

check-login.php
File ini jelas digunakan untuk mem-validasi data yang kita inputkan untuk dicocokkan dengan database. Dan seperti biasa di sini saya menggunkana mysqli object oriented alasannya, saya sudah terbiasa dengan itu hehehe. pada line-line awal saya menggunakan IF inline untuk lebih jelas bisa dilihat di Macam – macam bentuk IF di PHP.

Pada line berikutnya saya menggunakan fungsi escape_string() untuk menghindari SQL injection. Meskipun belum tentu aman dari hacking hehehe.

contoh :

[pre]$username = $koneksi->escape_string($username);[/pre]

paging.php
File ini digunakan untuk menjebatani atau bertugas atas urusan perpindahan halaman sekaligus menghindari pengaksesan file.php kita secara langsung karena itu berbahaya.

Sedikit tambahan
Pertama dalam sistem login ini saya menggunakan “session” untuk penyimpanan sementara, sehingga user yang sudah berhasil login tidak perlu login lagi sampai user logout.

Kedua saya memanfaatkan define untuk menghindari pengaksesan file.php secara langsung
contoh :

[pre]if( !defined(‘index’) ) { die(‘Halaman Di lindungi’); }[/pre]

jika tidak percaya silahkan check dengan mengetikan url //localhost/login/load.php

Ketiga saya menggunakan framework css dari bootstrap untuk memudahkan pembuatan layout website dan
Keempat saya menggunakan font-awesome untuk menambah ikon-ikon didalam website.

Source Code

Berikut Screenshoot-nya

Halaman Visitor atau pengunjung
Halaman login
Halaman Administrator

Untuk lebih lengkapnya tentang membuat form login dengan php kalian bisa cek source code yang sudah disediakan di repository github

Hai Sipinter! Kembali lagi di sesi Tutorial Pemrograman PHP dimana disini kita akan membahas semua hal tentang PHP sampai ke akar-akarnya.

Kali ini kita akan membahas bagaimana cara membuat halaman login di PHP, dimana dalam halaman ini akan menjadi pintu gerbang user dapat mengakses semua layanan dalam program web kita.

Bisa dibilang halaman Login merupakan halaman yang sangat memerlukan perlindungan yang sangat tinggi agar tidak gampang diserang hacker.

Kali ini kita tidak akan membahas bagaimana cara mengamankan proses login namun kita akan membahas bagaimana cara membuat halaman login sederhana yang passwordnya dienkripsi menggunakan fungsi password_hash().

Tahapan Membuat Halaman Login:

Baik mari kita bahas satu persatu tahap membuat halaman login dengan PHP dan MySQL.

Memiliki Tabel User dalam Database MySQL

Untuk melakukan proses login kita memerlukan database “web_pertama” yang berisi tabel “user” yang akan kita gunakan untuk menyimpan data dari setiap user.

Sehingga ketika proses login dilakukan, PHP akan mencocokan apakah email dan password yang diinputkan sama dengan yang ada di tabel user dan jika sama maka login berhasil.

Untuk rancangan tabelnya sendiri bisa dilihat pada gambar di bawah:

Tabel ini sama dengan tabel yang kita gunakan dalam postingan:

Membuat Halaman Register di PHP

Dan cara membuat database dan tabel sudah dijelaskan pada postingan:

Cara Membuat CRUD Database MySQL di PHP.

Membuat Form Login

Proses login biasanya dilakukan melalui form dengan memasukan data username atau email dan password, untuk login yang akan kita buat kita akan menggunakan email dan password.

Buatlah form login sesuai dengan database dan tambahkan tag require agar input form tidak boleh kosong.

form login wajib menggunakan method post dan data form ini akan diarahkan ke file LoginController.php dan form ini sendiri disimpan pada file login.php.

Berikut merupakan kode untuk membuat form login, kode ini kita simpan di file login.php:

<!DOCTYPE html> <html> <head> <title>Login | Web Pertama</title> </head> <body> <h1>Login to System</h1> <hr> <div style="color: red"> <?php //untuk menampikan pesan ketika gagal login ke sistem if (isset($_GET['pesan'])) { echo $_GET['pesan']; } ?> </div> <form method="POST" action="LoginController.php"> <table cellspacing="10"> <tr> <td><label for="email">Email</label></td> <td><input type="email" name="email" maxlength="100" size="100" required placeholder="Masukan email..."></td> </tr> <tr> <td><label for="password">Password</label></td> <td><input type="password" name="password" maxlength="30" size="30" required placeholder="Masukan password..."></td> </tr> <tr> <td></td> <td><input type="submit" name="login" value="Login"></td> </tr> </table> </form> </body> </html>

Membuat Perintah Login di PHP dengan Mysqli dan password_verify

Karena pada database password user disimpan dalam bentuk kode hash hasil enkripsi data menggunakan fungsi password_hash sehingga untuk mengecek apakah password yang diinputkan sama dengan yang di database kita menggunakan fungsi password_verify().

Berikut merupakan perintah untuk melakukan login ke sistem web yang kita buat:

<?php if ($_SERVER['REQUEST_METHOD']=='POST' && $_POST['login']=='Login') { //panggil koneksi database include 'KoneksiDatabase.php'; $email=trim($_POST['email']); $password=$_POST['password']; //cek apakah ada user dengan email yang diinputkan $perintah=mysqli_query($db,"SELECT id_user,nama,email,password,hak_akses FROM user WHERE email='$email'"); if (mysqli_num_rows($perintah)==1) { while($data=mysqli_fetch_array($perintah)){ //proses pengecekan apakah password benar if (password_verify($password, $data['password'])) { session_start(); $_SESSION['id_user']=$data['id_user']; $_SESSION['nama']=$data['nama']; $_SESSION['hak_akses']=$data['hak_akses']; header('location:dashboard.php'); } else { header('location:login.php?pesan=Maaf email atau password salah'); } } } else { header('location:login.php?pesan=Maaf email atau password salah'); } } else { header('location:login.php'); } ?>

Seperti perintah di atas untuk membuat koneksi database kita hanya perlu memanggil file KoneksiDatabase.php yang berisi:

<?php //cara agar pesan error mysqli dapat ditangani try catch mysqli_report(MYSQLI_REPORT_STRICT); //setting pesan jika koneksi database gagal define("MYSQL_CONN_ERROR", "Koneksi ke Database Gagal"); $host="127.0.0.1"; $username="root"; $password=""; $database="web_pertama"; try{ $db= mysqli_connect($host,$username,$password,$database); }catch(mysqli_sql_exception $e){ echo "<h1>Database Gagal Konnek</h1><br>"; echo "<p>$e</p>"; } ?>

Sehingga kita tidak perlu lagi membuat perintah koneksi database berulang kali dan jika kita ingin merubah database yang digunakan kita tinggal merubah perintah pada file KoneksiDatabase.php saja.

Kita juga menggunakan variabel global bawaan PHP yaitu $_SESSION untuk menyimpan data user ketika proses login berhasil.

Dimana variabel $_SESSION akan tersimpan pada web server dan akan hilang ketika kita menghapusnya, logout atau menutup browser kita.

Mengatur Halaman PHP Hanya Bisa Diakses Ketika Sudah Login

Untuk memastikan apakah seseorang sudah login ketika mengakses suatu halaman, Kita tinggal mengecek apakah $_SESSION[‘id_user’] sudah ada atau tidak seperti contoh pada file dashboard.php berikut:

<?php //perintah untuk memastikan apakah sudah login session_start(); if (!isset($_SESSION['id_user'])) { header('location:login.php'); } ?> <h1>Welcome <?php echo $_SESSION['nama']; ?></h1>

Sehingga jika belum login kita ketika mengakses dashboard.php kita akan langsung dialihkan ke halaman login.php.

Testing Proses Login PHP

Tahap terakhir dari coding adalah melakukan testing untuk memastikan web yang kita buat sudah berjalan sesuai yang dibutuhkan.

Pertama, kita akan melakukan testing dengan mengakses halaman dashboard tanpa login, hasilnya adalah kita dilempar ke halaman login.

Kedua kita mencoba menginputkan email dan password yang salah dan hasilnya kita mendapat pesan peringatan seperti gambar di bawah:

Hasilnya ketika input email dan password salah:

Ketiga, kita akan melakukan testing jika kita menginputkan data email dan password yang benar, apakah kita akan akan langsung dialihkan ke halaman dashboard.php.

hasilnya adalah kita dialihkan ke halaman dashboard, seperti gambar di bawah:

Setelah melakukan testing kita bisa memastikan perintah login di atas sudah berjalan sesuai yang kita butuhkan.

Sekian postingan kali ini postingan ini tidak luput dari kesalahan, jadi jika ada kesalahan admin mohon maaf yang sebesar-besarnya.

Postingan terbaru

LIHAT SEMUA