Cara Lengkap Membuat Autentifikasi User Di PHP + MD5

Untuk melengkapi dari latihan sebelumnya "Aplikasi Berita dengan PHP dan MySQL", sekarang kita akan menambahkan autentifikasi user alias membuat batasan siapa aja yang bisa masuk untuk akses.

Step-1:
Tambahkan tabel ke dalam database yang sudah ada dengan nama: logins 
CREATE TABLE Logins (
ID mediumint not null auto_increment,
username varchar(30) not null,
pass varchar(64) not null defatult 'password',
primary key(ID));
Step-2:
Membuat File untuk Register User.
Nama File : register.php
Deskripsi  : untuk menambahkan user baru.
<?
include "koneksi.php";

if (isset($_POST['submit'])){
    if($_POST['username'] | !$_POST['passwd1'] | !$_POST['passwd2']){
        die("Anda tidak melengkapi semua field");
        }
    if (!get_magic_quotes_gpc()){
        $username=addslashes($_POST['username']);
        $passwd1=addslashes($_POST['passwd1']);
        }
//memeriksa username jika terjadi kesamaan nama user       
    $usercheck=$_POST['username'];
    $sql=mysql_query("SELECT username FROM logins WHERE username='".$usercheck."'")or die(mysql_error());
    $check=mysql_num_rows($sql);
   
    if ($check !=0){
        die("<b>MAAF, username : ".$_POST['username']." sudah digunakan</b>");
        }else if($_POST['passwd1'] != $_POST['passwd2']){
        die("Password Anda tidak sama, <b>Confirm Password</b>.");
        }
    //menambahkan user baru   
        $enkrip_pass=md5($passwd1);
        $query="INSERT INTO logins(username, pass) VALUES('$username','$enkrip_pass')";
        $sql=mysql_query($query)or die(mysql_error());
?>
<h1>Registered</h1>
<p>Thank you, you have registered - you may now login.
Click <a href="login.php">here</a> for Login</p>
<?
}else{
?>
<form action="" method="post" name="Register">
<table border="0">
<tr><td>Username </td><td> <input type="text" name="username" maxlength="60" size="60"></td></tr>
<tr><td>Password </td><td> <input type="password" name="passwd1" maxlength="10" size="10"></td></tr>
<tr><td>Confirm Password </td><td> <input type="password" name="passwd2" maxlength="10" size="10"></td></tr>
<tr><th colspan="2"><input type="submit" name="submit" value="Register"></th></tr>
</table>
</form>
<?
}
?>

Step-3
Setelah user terdaftar, selanjutnya melakukan autentifikasi terhadap user dengan login form.
Nama File : Login.php
Deskripsi : melakukan autentifikasi terhadap user.
<?
session_start();
if (isset($_POST['submit'])){

include "koneksi.php";

    if(!get_magic_quotes_gpc()){
        $passwd1=addslashes($_POST['passwd1']);
        $username=addslashes($_POST['username']);
        }
//    $enkrip_pass=md5($pass);
//periksa username dan password saat login
$sql=mysql_query("SELECT * FROM logins WHERE username = '".$username."'")
    or die(mysql_error());
    $row=mysql_fetch_assoc($sql);
 if (md5($passwd1)==$row['pass']){
        //menciptakan session
        session_register("username");
        $_SESSION['username']=$row['username'];
        header("Location: ".$config_basedir);
       }else{
        header("Location: ".$config_basedir."/login.php?error=1");}
}else{
?>
<html>
<head>
       <title>Login here...</title>
       <link rel="stylesheet" href="style.css">
</head>
<body>
    <form action="" method="post" name="login">
    <table align="center">
    <tr><th colspan="2"><h2>Login</h2></th></tr>
    <tr><td>user name </td><td> <input type="text" name="username"></td></tr>
    <tr><td>password  </td><td> <input type="password" name="passwd1"></td></tr>
    <tr><td colspan="2"><input type="submit" name="submit" value="Login"></td></tr>
<?
if($_GET['error']){
    echo "<tr><td colspan='2'><hr><small>Gagal Login, Silahkan Coba lagi.</small></td></tr>";
    }
?>
    </table>
    </form>
</body>
</html>
<?
}
?>
Step-4
Setelah login tentunya harus jangan lupa logout untuk menghapus session dari user yang masuk.
Nama File : Logout.php
Deskripsi  : menghapus session / keluar dari aplikasi
<?
/*---------------------------------------------
Halaman ini merupakan halaman logout
dimana kita akan menghapus session yang ada
-----------------------------------------------*/
session_start();
    unset ($_SESSION['username']);
    session_destroy();
    require "koneksi.php";
    header("Location: ".$config_basedir);
?>
Step-5
Setelah mengetikan script di atas, sebelumnya ada perubahan sedikit pada script file sebelumnya:
  1. koneksi.php, dan
  2. index.php
koneksi.php
Tambahkan script dibawah ini:
$config_basedir = "http://127.0.0.1/berita";
Contoh script setelah ditambahkan:
<?
  $host='localhost';
  $user='root';
  $pass='password';
  $dbnm='pw2';
  $config_basedir = "http://127.0.0.1/berita"; 
  $conn=mysql_connect($host,$user,$pass);
...
index.php
Script yang ditambahkan:
<?
if(isset($_SESSION['username'])){
      echo "<a href='arsip_berita.php'>Arsip Berita</a> |";
      echo "<a href='input_berita.php'>Input Berita</a> |";
      echo "<a href='logout.php'>Log out</a>";
      echo "<div align='center'>SELAMAT DATANG ".$_SESSION['username']."</div>";     
}
?>
Script setelah ditambakan.
<?
session_start();
  include "koneksi.php";
?>
<html>
<head>
       <title>Index Berita</title>
       <link rel="stylesheet" href="style.css">
</head>
<body>
      <a href="index.php">Halaman Depan</a> |
<?
if(isset($_SESSION['username'])){
      echo "<a href='arsip_berita.php'>Arsip Berita</a> |";
      echo "<a href='input_berita.php'>Input Berita</a> |";
      echo "<a href='logout.php'>Log out</a>";
      echo "<div align='center'>SELAMAT DATANG ".$_SESSION['username']."</div>";     
}
?>
      <br><br>
<h2>Halaman Depan ~ Lima Berita Terbaru</h2>

Panjang juga nich script, meski ada kesulitan mudah-mudahan sukses 100%.

Source : http://desktop-labsore.blogspot.com/2011/05/membuat-form-login-dengan-md5-di-php.html

Artikel Lainnya