logo Sipintek.com
Browse : Home / Pemrograman / PHP / Membuat Halaman Login di PHP dengan MySQLi
Gambar membuat halaman login di php

Membuat Halaman Login di PHP dengan MySQLi

Published by I Gede Arya Surya Gita - Posted on Maret 6th, 2020 - 2 Comments

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:

Gambar tabel user di mysql untuk login di php

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:

Gambar test input data yang salah di form login php

Hasilnya ketika input email dan password salah:

Gambar hasil ketika kita menginputkan email dan password yang 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.

Gambar ketika input data yang benar ke form login

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

Gambar hasil ketika data email dan password benar

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.

“Nikmati sebuah proses mulai dari belajar, mengembangkan sampai kita bisa berbagi untuk orang lain”.

Bantu kami dengan share postingan ini dan ikuti social media Sipintek.


gambar heroku alternatif

Tempat Upload Backend Web Node/Go yang Free


Gambar Autoload Composer, Cara Terbaik Memanggil Class di php

Autoload Composer, Cara Terbaik Memanggil Class di php


Gambar Apa Itu Composer PHP Fungsi dan Cara Installasinya

Apa Itu Composer PHP? Fungsi dan Cara Installasinya


Gambar Membuat Database Untuk Web CMS dengan MySQL #2

Membuat Database Untuk Web CMS dengan MySQL #2



2 tanggapan untuk “Membuat Halaman Login di PHP dengan MySQLi”

  1. wihda berkata:

    kak mau tanya, data yang tersimpan ke database itu, setelah isi registrasi, di kolom password kok beda sama yang kita isi waktu register. mohon penjelasannya kak

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *