Page Nav

HIDE

Grid

GRID_STYLE

Breaking News

latest

Membuat Aplikasi web dengan fasilitas Login dgn enkripsi sha1

Banyak website atau aplikasi web di internet yang menggunakan fasilitas pendaftaran dengan Sign in dan Sign out. Fungsinya tentu saja memb...

Banyak website atau aplikasi web di internet yang menggunakan fasilitas pendaftaran dengan Sign in dan Sign out. Fungsinya tentu saja membatasi akses terhadap layanan tertentu yang disediakan pada situs tersebut. Hanya anggota yang telah terdaftar saja yang diijinkan mengakses layanan-layanan khusus tersebut. Kali ini kita akan membahas bagaimana membuat aplikasi yang memiliki fasilitas Sign in/Sign out. Yang dibahas di sini adalah halamannya saja, sedangkan isi aplikasi yang terletak di dalamnya bisa Anda kembangkan sendiri.
Dalam pembuatan aplikasi ini kita membutuhkan database yang akan menyimpan data-data dari para anggota yang telah terdaftar, dalam hal ini untuk encrypt password dengan md5 sekarang sudah tidak secure lagi, maka itu encrypt password kita gunakan sha1. Buatlah database dengan MySQL sebagai berikut:
mysql> create database user;
mysql> create table tbl_user(
    -> username varchar(20),
    -> passwd varchar(40));
Database tersebut terdiri dari satu tabel bernama “tbl_user” dan tabel tersebut memiliki 2 buah field yaitu username dan passwd untuk menyimpan password.
Sekarang mula-mula kita akan buat dahulu halaman pendaftaran anggota. Skripnya adalah sebagai berikut:
<HTML>
<HEAD>
<TITLE> Sign Up Page</TITLE>
</HEAD>
<BODY>
Isilah username dan password yang Anda inginkan <br />
<PRE>
<FORM NAME="SignUp" METHOD="post" ACTION="signup_process.php">
Username    : <INPUT TYPE="text" NAME="username">
Password    : <INPUT TYPE="password" NAME="passwd">
<br />
<INPUT TYPE="submit" VALUE="Submit">
</FORM>
</BODY>
</HTML>
Simpanlah skrip ini dengan nama signup.php atau signup.htm pun boleh karena pada kenyataannya tidak ada skrip php pada file ini.
Berikutnya kita akan membuat file signup_process.php yang akan memproses pendaftaran yang akan user lakukan. Skripnya adalah sebagai berikut:
<HTML>
<HEAD>
<TITLE> Processing your Account </TITLE>
</HEAD>
<BODY>
<?php
$username = $_POST['username'];
$passwd = sha1($_POST['passwd']);
$host = "localhost";
$db_user = "root";
$db_passwd = "root";
$db = "user";
$stop = 0;
$sql = "select username from tbl_user";
$conn = @mysql_connect($host,$db_user,$db_passwd) or
    die("Koneksi gagal : " . mysql_error());
mysql_select_db($db);
$qry = mysql_query($sql) or
    die("Query salah : " . mysql_error());
while ($row = mysql_fetch_array($qry)) {
    if ($username == $row['username']) {
        echo "Username $username was already chosen by someone else <br />";
        echo "Go back and choose another username";
        $stop = 1;
        break;
    }
}
if ($stop==0) {
    $sql = "insert into tbl_user values ('$username','$passwd')";
    $qry = mysql_query($sql) or
        die("Query salah : "  . mysql_error());
    echo "Your account is successfully created <BR>";
    echo "<A href='login_page.php'> Click here </A> to login Page";
}
?>
</BODY>
</HTML>
Pada skrip ini mula-mula diperiksa apakah username yang dipilih telah ada di dalam database. Jika telah ada, maka php akan memberikan peringatan bahwa username tersebut telah ada dan Anda dipersilakan membuat username baru. Jika belum ada, maka informasi username dan password Anda akan didaftarkan ke dalam database dan Anda akan diberitahu bahwa account Anda telah dibuat. Setelah proses sign up berhasil, kini kita akan membuat halaman untuk login. Skripnya adalah sebagai berikut:
<HTML>
<HEAD>
<TITLE> Login Page </TITLE>
</HEAD>
<BODY>
Please Login: <br />
<PRE>
<FORM NAME="login" METHOD="post" ACTION="login_process.php">
Username : <INPUT TYPE="text" NAME="username">
Password : <INPUT TYPE="password" NAME="passwd">
<br />
<INPUT TYPE="submit" VALUE="Submit">
</FORM>
</PRE>
New user please register<A href="/signup.php"> here </A>
</BODY>
</HTML>
Simpanlah file ini dengan nama login.php atau login.htm.
Skrip ini akan diolah pada file login_process.php. Nah, skrip dari file login_process.php adalah sebagai berikut:
<HTML>
<HEAD>
<TITLE> Authentification Page </TITLE>
</HEAD>
<BODY>
<?
$username = $_POST['username'];
$passwd = sha1($_POST['passwd']);
$host = "localhost";
$db_user = "root";
$db_passwd = "root";
$db = "user";
$stop = 0;
$sql = "select * from tbl_user where username='$username'";
$conn = @mysql_connect($host,$db_user,$db_passwd) or
    die("Koneksi gagal : " . mysql_error());
mysql_select_db($db);
$qry = mysql_query($sql) or
    die("Query salah : " . mysql_error());
$num = mysql_num_rows($qry);
$row = mysql_fetch_array($qry);

if ($num==0) {
    echo "Username not found <br />";
    echo "Go back and try another username";
} else {
    if ($passwd!=$row['passwd']) {
        echo "Your password is invalid <br />";
        echo "Go back and type the valid password";
    } else {
        echo "You are successfully logged in";
    }
}
?>
</BODY>
</HTML>
Nah sekian skrip dengan fasilitas Sign in dan sign out, selamat belajar.
-----


Pada artikel sebelumnya telah dibahas tentang halaman pendaftaran anggota dan halaman login, namun tentang halaman login baru diberikan skripnya saja, belum pembahasannya. Pada edisi kali ini kita akan bahas lebih lanjut mengenai halaman login tersebut.
Halaman pertama adalah form login yang disimpan dengan nama login.php dan halaman kedua adalah pengolah data dari form login yang disimpan dengan nama login_process.php.
Pada prinsipnya skrip login_process.php ini mengolah data-data dari halaman login. Langkah pertama yang dilakukan tentu saja adalah koneksi ke database. Setelah itu mencocokkan username yang ada di database, jika tidak cocok Anda diminta memasukkan username kembali. Jika username cocok dengan record yang ada pada database, diperiksa passwordnya. Jika passwordnya cocok, maka Anda akan dapat login, jika tidak Anda diminta untuk mengisi password yang tepat. Mudah bukan?
Namun sebenarnya skrip tersebut belumlah selesai. Mengapa? Sebab skrip seperti di atas (sekalipun telah diberi “pagar” di sana-sini) tetap mudah ditembus oleh siapapun, bahkan Anda tidak perlu belajar menjadi hacker untuk dapat menembusnya.
Contoh mudah, isilah form login dengan data yang ada pada database Anda. Dengan sendirinya Anda akan login dan masuk ke halaman main.php yang bertuliskan “You are successfully logged in”. Sekarang tekan tombol “back” browser Anda, lalu setelah Anda tiba kembali ke halaman login, tekan tombol “forward” pada browser Anda dan lihat apa yang terjadi? Ya, Anda akan kembali masuk ke halaman login_process.php dan login dengan sukses. Itu artinya jika Anda lalai dan meninggalkan komputer Anda, orang lain dengan mudah akan masuk menggunakan account Anda.
Lalu bagaimana solusinya? Salah satu caranya adalah dengan menambahkan session ke dalam aplikasi tersebut. Dengan memeriksa apakah suatu variabel session pernah didaftarkan atau belum, maka aplikasi tersebut menjadi lebih aman. Dengan menggunakan solusi ini, fasilitas sign in/sign out pada aplikasi kita akan terpecah menjadi lima file sebagai berikut:

File login.php
<HTML>
<HEAD>
<TITLE> Login Page </TITLE>
</HEAD>
<BODY>
Please Login: <br />
<PRE>
<FORM NAME="login" METHOD="post" ACTION="login_process.php">
Username : <INPUT TYPE="text" NAME="username">
Password : <INPUT TYPE="password" NAME="passwd">
<br />
<INPUT TYPE="submit" VALUE="Submit">
</FORM>
</PRE>
New user please register<A href="/signup.php"> here </A>
</BODY>
</HTML>
File login_process.php
<?
session_start();
$username = $_POST['username'];
$passwd = sha1($_POST['passwd']);
$host = "localhost";
$db_user = "root";
$db_passwd = "root";
$db = "user";
$sql = "select * from tbl_user where username='$username'";
$conn = @mysql_connect($host,$db_user,$db_passwd) or
    die("Koneksi gagal : " . mysql_error());
mysql_select_db($db);
$qry = mysql_query($sql) or
    die("Query salah : " . mysql_error());
$num = mysql_num_rows($qry);
$row = mysql_fetch_array($qry);
if ($num==0 OR $passwd!=$row['passwd']) {
    header("Location: failed.php");
} else {
    $_SESSION['login']=1;
    header("Location: success.php");
}
?>

File success.php
<?
session_start();
if(!isset($_SESSION['login'])) {
    include("login.php");
} else {
?>
    <HTML>
    <HEAD>
    <TITLE> Success </TITLE>
    </HEAD>

    <BODY>
    You are successfully logged in <br />
    You can access this application <br /> <br />
    <A href="/logout.php" title="Log Out"> Log Out </A>
    </BODY>
    </HTML>
<?
}
?>

File failed.php
<HTML>
<HEAD>
<TITLE> Failed </TITLE>
</HEAD>

<BODY>
Your user name or password is incorrect <BR>
Sorry, you are not allowed to access this page
</BODY>
</HTML>

File logout.php
<?
session_start();
unset($_SESSION['login']);
session_destroy();
header("Location: login.php");
?>
Nah, keterangan dari file-file ini akan diberikan pada artikel selanjutnya. Yang jelas, dengan menggunakan kelima file ini, fasilitas sign in dan sign out yang dibuat akan lebih aman meskipun Anda mengklik tombol back maupun forward yang ada di browser berkali-kali. Selamat mencoba dan berkreativitas.


Tidak ada komentar