Membuat Fungsi Login Sederhana Dengan PHP dan MYSQL

April 14, 2020

kali ini kita kan membuat fungsi sederhana untuk login di php dan mysql.diaman sistem login berguna untuk membatasi user yang mengakses aplikasi kita jadi untuk membuat sistem login kite harus memeperhatikan sistem keamanannya

pertama kita membuat database dan didalam databse tersebut kita tambahkan table user yang akan menyimpan data user yang nantinya kita gunakan untuk login

kamu bisa membuat tabel user dengan command atau langsung menggunakan phpmyadmin

CREATE TABLE `user` (
	    `user_id` INT(11) NOT NULL AUTO_INCREMENT,
	    PRIMARY KEY (`user_id`),
	    `nama` VARCHAR(30) NOT NULL,
	    `username` VARCHAR(30) NOT NULL,
	    `password` VARCHAR(100) NOT NULL,
	    `level` int(1) NOT NULL,
	    `waktu_diinput` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

nanti struktur tabelnya akan seperti ini

kali ini untuk pengamanan password saat login kita menggunakan fungsi dari php yang bernama password password_hash(),

<?php
echo password_hash("admin",PASSWORD_DEFAULT);


karena passwordnya bersifat hash kita echo dulu password yang akan kita gunakan untuk login pertama kali lalu kemudian copy hasil echo tadi

disini saya menggunakan kata “admin” sebagai password saya jika berhasil maka akan muncul kode panjang yang teracak setiap kalian refresh halaman,copy kode tersebut.

jika sudah mendapatkan password yang ter-hash silahkan masukan data user baru dari command maupun lewat phpmyadmin langsung

kita kosongkan saja iduser dan waktudiinput karena akan otomatis terisi jika kita insert

jika sudah maka kita sudah mempunyai data user denga username:admin dan password:admin

selanjutnya kita akan ngoding scriptnya

pertama buat kode untuk koneksi databasenya

<?php
$host 	= "localhost";
$user 	= "root";
$pass 	= "";
$db 	= "nama_database";
$con = mysqli_connect($host,$user,$pass,$db);


if(!$con){
  die(mysqli_connect_error());
}

selanjutnya kita akan membuat fungsi “amankan” dalam dunia pemograman ada istilah sql ijection dimana hacker dengan mudah membypas sistem login kita dengan memanfaatkan kelemahan query sql.untuk itu kita harus mengakali kelemahan itu dengan membuat funsgi yang akan mengamankan setiap username dan password yang dikirim dari halaman login

<?php
function amankan($string){
	global $con;
	$h = htmlspecialchars(mysqli_escape_string($con,$string));

	if (trim($h,'') == '') {
		return false;
	}
	return $h;
}

kemudian kita akan membuat fungsi untuk loginnya

<?php
function cek_login($username,$password){
		global $con; 
		$escape_username = amankan($username);
		$escape_password = amankan($password);
		
		
		$result = mysqli_query($con,"select * from user where username='$escape_username'");
		$data = mysqli_fetch_assoc($result);
		$cekpas = password_verify($escape_password,$data['password']);
		
		if($cekpas){
			return true;//berhasil login
		}
		else {
			return false;//gagal login
		}
			
	}

berikut cara penggunaan fungsinya

<?php
if(isset($_POST['nama_tombol_submit_di_form'])){ //cek klu tombol login di pencet
		if(cek_login($_POST['username'],$_POST['password'])){//masukan username dan password
			echo "ok siap anda masuk bos";
		}
		else {
			echo "gagal bos";
		}
	}

kode di atas akan mengecek jika tombol untuk login di tekan maka fungsi cek_login akan menerima informasi dari from yang disubmit

berikut penggunaan lengkapnya dengan form HTML

<?php 
	
	$host 	= "localhost";
	$user 	= "root";
	$pass 	= "";
	$db 	= "nama_database";
	$con = mysqli_connect($host,$user,$pass,$db);

	
	if(!$con){
		die(mysqli_connect_error());
	}

	function amankan($string){
		global $con;
		$h = htmlspecialchars(mysqli_escape_string($con,$string));

		if (trim($h,'') == '') {
			return false;
		}
		return $h;
	}

	

	function cek_login($username,$password){
		global $con; 
		$escape_username = amankan($username);
		$escape_password = amankan($password);
		
		
		$result = mysqli_query($con,"select * from user where username='$escape_username'");
		$data = mysqli_fetch_assoc($result);
		$cekpas = password_verify($escape_password,$data['password']);
		
		if($cekpas){
			return true;//berhasil login
		}
		else {
			return false;//gagal login
		}
			
	}

	
	if(isset($_POST['tombol_login'])){ //cek klu tombol login di pencet
		if(cek_login($_POST['username'],$_POST['password'])){//masukan username dan password
			echo "ok siap anda masuk bos";
		}
		else {
			echo "gagal bos";
		}
	}
	

	
 ?>	

 <form  method="POST" >
 	<input type="text" name="username" placeholder="Username">
 	<br>
 	<input type="password" name="password" placeholder="Password">
 	<br>
 	<input type="submit" name="tombol_login">
 </form>

itu tadi cara membuat sistem login sederhana dengan fungsi php kamu bisa kembangakan sendiri sistem login ini dengan menambahkan fiturnya atau sistem keamaannya,seperti redirect halaman jika berhasil login atau mengecek sesi jika user sudah login atau belum