14 Tutorial Membuat Halaman Login Sederhana Yang Aman

Kali ini saya akan memberikan contoh penggunaan database, session, dan enkripsi MD5 untuk menjadikannya sebagai halaman login yang cukup aman.

Kebutuhan:
- Webserver dengan dukungan PHP
- Myslq Database Server

Secara sederhana, cara kerjanya adalah sbb:
- Ketika user memasukkan username dan password-nya, maka yang pertama kali dilakukan adalah mengeceknya dalam database apakah username tersebut telah terdaftar.
- Jika telah terdaftar dan berhasil melakukan login, maka sang user akan diberi sebuah session yang diambil dari usernamenya
- Jika kesemuanya tidak sesuai maka sang user akan diredirect ke halaman login.php, sehingga terlihat seperti diam ditempat.

Pertama-tama kita buat databasenya

create database coba;
use coba;
CREATE TABLE IF NOT EXISTS `users` (
  `username` varchar(20) NOT NULL,
  `password` varchar(200) NOT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



selanjutnya kita buat file-file php-nya

config.php

<?php 
//membuat koneksi ke database
mysql_connect("localhost", "root", "admin");

//localhost = nama server-nya
//root  = user mysql
//admin  = password user root
 
//memilih database
mysql_select_db("coba");
?>


login.php

<?php 
//memulai session
session_start(); 

//cek adanya session, jika session sudah ada maka diarahkan ke index.php
if (ISSET($_SESSION['username'])){
header("location: index.php");
}
?>


<form method="post" action="cek.php">
<pre>Username <input name="username" type="text">
Password <input name="password" type="password">
  <input name="submit" value="Login" type="submit">

  Bukan Member? Silahkan Daftar
  <a href="signup.php">Daftar</a>
  
</pre>
</form>  


cek.php

<?php 
//memulai session
session_start(); 

//koneksi ke database
include "config.php" ; 

//mengambil data dari form
$username    = $_POST['username']; 
$password    = $_POST['password']; 

//enkripsi password dengan md5
$password_md5   = md5($password);

//cek username dan password dari database
$perintah   = "select * from  users where username='$username'&&password='$password_md5'"; 
$perintah_di_query = mysql_query($perintah); 
$ketersediaan  = mysql_num_rows($perintah_di_query); 

//Cek adanya username dan password di database dilanjutkan dengan membuat session
if ($ketersediaan >= 1 ){ 
$_SESSION['username'] = $username; 
header("location: index.php"); 
}else{
header("location: login.php"); 
}
?>


index.php

<?php 
//memulai session
session_start(); 

//cek adanya session
if (ISSET($_SESSION['username'])){
echo "Anda Login Sebagai ";
echo $_SESSION['username']; 
echo "<br><a href='logout.php'>logout</a>"; 

//jika tidak ada session
}else{
header("location: login.php");
}
?> 
<html><body>
<br><br><h2>
Home Page
<br><br></h2>
</body></html>


logout.php

<?php  
//memulai session
session_start(); 

//cek adanya session, jika session ada maka akan di unset dan dilanjutkan dengan destroy session
if(ISSET($_SESSION['username'])) { 
UNSET($_SESSION['username']); 
} 
header("location: index.php"); 
session_destroy(); 
?>


signup.php

<form method="post" action="signup_process.php">
<pre><h2>Form Pendaftaran</h2>
Username <input name="username" type="text">
Password <input name="password" type="password">
  <input name="submit" value="Daftar" type="submit">
</pre>
</form>


signup_process.php

<?php 
include "config.php";

///mengambil data dari form
$username  = $_POST['username'];
$password  = $_POST['password'];
$password_md5 = md5($password);

//cek pengisian data
if($username=='' || $password==''){
echo "Data tidak lengkap<br--><a href=signup.php>Back</a>";

//jika data sudah lengkap, dilanjutkan input data ke database
}else{
$perintah   = "insert into users values ('$username', '$password_md5')"; 
$perintah_di_query = mysql_query($perintah); 

//Jika input data berhasil, dilanjutkan dengan pemberitahuan pendaftaran berhasil
if ($perintah_di_query) {
echo "Daftar berhasil, silakan <a href='index.php'>login</a>";

//jika input data gagal, dilanjutkan dengan pemberitahuan pendaftaran gagal
}else{
echo "Daftar gagal atau username telah terdaftar silakan <a href='signup.php'>Ulangi</a> atau <a href='login.php'>Login</a>";
}
}
?>



- Pengujian dilakukan dengan membuat sebuah user dan melakukan proses login, jika berhasil maka Home Page akan tampil.
Comments
14 Comments

14 komentar:

hury koch mengatakan...

masih ada yang salah tu gan,,
untung udah ane edit dikit2.,.,

*thank'z sudah membantu

erwin mengatakan...

iya bro, terutama yg "<!--?php" dan "?-->" diganti sama "<?php" dan "?>"

Itu bawaan syntax highlighter-nya, jadinya kaya gitu.

Thanks bro...

erwin mengatakan...

sip, masalah syntax udah diperbaiki!!

Anonim mengatakan...

thanks bro :-)
nice info

Anonim mengatakan...

cssnya mana bang??

erwin mengatakan...

namanya juga sederhana bro,, jdi ga pake css,, yg penting agan2 ngerti konsepnya...

Anonim mengatakan...

bro kenapa w coba login gk mau masuk ke index???
plisss bales GPL w butuh neh buat tugas UAS kuliah nih

erwin mengatakan...

ada keterangan error tertentu ga bro??
klo ga ada keterangan error ane sulit ngasih solusinya soalnya udah udah di tes lancar2 aja..

Anonim mengatakan...

sama nih g bs jg kaya agan yg diatas...pas di login, malah g masuk ke indexnya...g ada keterangan eror sih,,,tp g bs masuk.coba deh gan dicek ^^v

erwin mengatakan...

udah ane cek lagi gan, 100% work!
perhatikan password mysql di config.php,
bikin user dulu sblum login.
Monggo di coba lgi gan.. :-)

Blog Rohman mengatakan...

maaf kK saya mau tanya..gimna caranya supaya login admin keamanannya diperkuat intinya ga bisa di bobol…oleh user jahat atau seorang hacker….
boleh mnta scriptnya ngga…saya bngung.

erwin mengatakan...

ini baru sederhana sih, tingkat lanjutnya supaya bisa aman beberapa hal yang harus diperhatikan adalah:
- tingkat kesulitan password
- tingkat keamanan server
- alur autentikasi login
- ...
sorry ga bisa ngasih scriptnya, soalnya bnyak macam2 script buat mengamankan proses login :)

mr-alfa mengatakan...

Makasih Om
Tutorialnya CETARRRRRR BANGET, :D

erwin mengatakan...

ok

Posting Komentar