PHP Admin Leveling dan Login Menggunakan MD5

php leveling and login md5

php leveling and login md5

Tutorial beberapa bulan yang lalu, saya telah menjelaskan dan memberikan sedikit contoh mengenai implementasi level admin menggunakan session pada web berbasis PHP. Percobaan sederhana tersebut masih memiliki banyak kelemahan terutama pada fungsi header dan juga security.

Download Sampel + Database

Oleh karena itu, saya akan melengkapinya dengan beberapa perubahan fungsi PHP header location dan penambahan security login menggunakan MD5. Jika anda belum membaca dan mempraktikan tutorial sebelumnya, saya sarankan untuk mencoba mengaplikasikan tutorial tersebut, disini.

Dalam tutorial ini, hal paling menonjol terletak pada penambahan fungsi “Add User/Admin” yang miliki fitur enkripsi MD5, dimana telah banyak dipakai pada mayoritas aplikasi web berbasis PHP untuk security login. MD5 sendiri merupakan sebuah rekayasa kriptografi untuk karakter yang menghasilkan hash. 😀

Lets Start !

1Persiapan database dan konfigurasi

Penulis membuat database dengan nama Leveling dan membuat sebuah table ‘user’ yang berisi field, berikut :
1. id => tipe data Integer – 5 digit (Primary, Auto Increment).
2. Username => tipe data Varchar – 50 digit (Unique, Not Null).
3. Level => tipe data Varchar – 20 digit (Not Null).
4. Password => tipe data Varchar – 50 digit (Not Null).
Berikut adalah screenshot database yang telah penulis buat,

Setelah desain database kita buat seperti diatas, insert secara manual user dengan nama Admin. Untuk password, kita bisa memanfaatkan MD5 Online Generator seperti di laman www.md5.cz, Caranya, tinggal kita masukkan kombinasi huruf password dan klik button “hash darling, hash!” 😀

Untuk konfigurasi database, buatlah file config.php dan ketik kode standar konfigurasi seperti di bawah ini :

<?php
	$host="localhost";
	$user="root";
	$password="";	
	$koneksi=mysql_connect($host,$user,$password) or 
	die("Gagal koneksi mas bro..!");
	mysql_select_db("leveling");
?>

2Membuat halaman Index / Login

Langkah selanjutnya adalah membuat halaman index.php yang berisi tampilan login utama kita. Pada form index login ini, kita akan melemparnya melalui action ke dalam file login.php. Berikut adalah script index.php dan login.php yang bisa Anda ketik :

<?php
// memulai session
session_start();
error_reporting(0);
if (isset($_SESSION['level']))
{
  // jika level admin
  if ($_SESSION['level'] == "admin")
   { 
    header('location:admin.php'); 
   }
   // jika kondisi level user maka akan diarahkan ke halaman lain
   else if ($_SESSION['level'] == "user")
   {
       header('location:user.php');
   }
}
?>
<div id="form">
	<form method="post" action="login.php" class="form-horizontal">
	<label class="username">Username</label><br>
	<input class="input" type="text" name="username" placeholder="Masukkan Username"><br>
	<label class="password">Password</label><br>    	
	<input class="input" type="password" name="pass" placeholder="Masukkan Password"><br>
	<button type="submit" name="submit" class="btn">Login</button>
</form>
</div>

Login.php script,

<?php
session_start();
include 'config.php';
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['pass']);
$password = md5($password);
// query untuk mendapatkan record dari username
$query = "SELECT * FROM user WHERE username = '$username'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
// cek kesesuaian password
if ($password == $data['password'])
{
echo "sukses";
    // menyimpan username dan level ke dalam session
    $_SESSION['level'] = $data['level'];
    $_SESSION['username'] = $data['username'];
    //Penggunaan Meta Header HTTP
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=admin.php">';    
	exit;
}
else 
echo '<h1>Login gagal</h1>';
?>

Nah, dari script login.php Anda bisa melihat dua buah fungsi keamanan yang umum dipakai oleh developer PHP.

  • Pertama adalah mysql_real_escape_string() yang berfungsi untuk mengamankan kombinasi string berbahaya SQL Injecting,
  • dan yang kedua adalah pada md5($password) yang akan mengkonversi string password kedalam hash MD5.

3Membuat halaman Admin / Insert User

Pada file login.php, kita telah menuliskan beberapa kode jika kombinasi username dan password sesuai maka user akan ‘dilempar’ ke sebuah halaman admin.php menggunakan fungsi Meta Header Refresh. Fungsi ini akan berguna jika server PHP kita masih menggunakan PHP versi lawas.

Berikut adalah script untuk halaman admin.php, dimana pada halaman tersebut berisi form untuk membuat user baru memanfaatkan fungsi MD5 dan juga anti SQL Injection. 🙂

<?php
session_start();
error_reporting(0);
include 'config.php';
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['pass']);
$password = md5($password);
$level = $_POST['level'];
// query untuk insert data user baru
if (isset($username) && isset($password) && isset($level)) {
  $insert = "insert into user set username = '$username', password = '$password', level = '$level'";
  if (mysql_query($insert))
  {
    echo "<h3>User berhasil ditambahkan</h3>";
  }
  else {
    echo "<h3>User gagal ditambahkan</h3>";
  }
}
?>
<?php
// memulai session
session_start();
error_reporting(0);
if (isset($_SESSION['level']))
{
  // jika level admin
  if ($_SESSION['level'] == "admin")
   { 
    echo "<h3>Form add user</h3>";
    echo "<form method='post' action='admin.php' class='form-horizontal'>

    <label class='username'>Add Username</label><br>
      <input class='input' type='text' name='username' placeholder='Username'><br>

    <label class='password'>Password</label><br>      
      <input class='input' type='password' name='pass' placeholder='Password'><br>

    <label class='level'>Level</label><br>
    <select class='level' name='level'>
      <option value='admin'>Admin</option>
      <option value='user'>User</option>
    </select>

    <button type='submit' name='submit' class='btn'>Add user</button>

  </form>"; 
  echo "<a class='logout' href='logout.php'>Logout Now</a>";
   }
   // jika kondisi level user maka akan diarahkan ke halaman lain
   else if ($_SESSION['level'] == "user")
   {
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=user.php">';    
    exit;
   }
}
if (!isset($_SESSION['level']))
{
  echo '<META HTTP-EQUIV="Refresh" Content="0; URL=index.php">';    
  exit;
}
?>

Oke, selesai. Jika tutorial di atas pembaca ikuti dan pahami dengan saksama, saya pastikan aplikasi sederhana leveling dan securing menggunakan MD5 akan berjalan dengan baik. Saya telah menyertakan source code dan database untuk pembaca implementasikan.

Download Sampel + Database

Terima kasih ! Caaaooo 😀

 

Muhammad K Huda

A non exhausted blogger person within fullstack engineer (spicy food), open source religion, self-taught driver and maybe you know or don't like it. Simply says, Hello from Me!

 

4 thoughts on “PHP Admin Leveling dan Login Menggunakan MD5

  1. apa ini membuat password terenkripsi pada saat melakukan perintah POST, untuk menghindari sniffing melalui wireshark misalnya ?

  2. pak boss, ketika saya coba muncul “Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:\xampp\htdocs\Login_PHP\index.php:8) in C:\xampp\htdocs\Login_PHP\index.php on line 14”. trus saya coba masukkan username:admin, pass=123 tapi kok Login gagal yang keluar ya??

Leave a Reply to Hendri DP Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.