stupidfreak

Login Authentication dengan PHP

Posted by: dEn t0w0 on: 2 February 2009

login-auth

 

Sekarang kita akan membuat suatu skema login dengan PHP ditambah sedikit Javascript, secara garis besar skemanya adalah user membuat account di form registrasi, lalu data user tersebut disimpan ke dalam database, lalu dengan data itu user melakukan login untuk mengakses halaman utama, jika berhasil user dapat mengakses halaman utama lalu logout kembali ke halaman login.

Membuat direktori

Seperti biasa, untuk pertama kali kita akan membuat suatu direktori (folder) yang nantinya akan digunakan untuk menyimpan file-file skema login yang akan kita buat. Lihat tulisan saya sebelumnya, buatlah direktori dengan nama login di dalam direktori belajarphp sehingga anda mendapati (C:\xampp\htdocs\belajarphp\login)

 

Database

Selanjutnya kita akan membuat database yang akan digunakan untuk menyimpan data user, buat database di MySQL dengan PHPMyAdmin (Saya menggunakan MySQL Front).  Buatlah database dengan nama belajarphp, lalu buatlah tabel dengan nama anggota pada database belajarphp yang memiliki empat field (username, password, nama dan alamat), lihat strukturnya dibawah ini.

 

Field

Type (Length)

Keterangan

username

char (20)

Primary

password

varchar (32)

 

nama

varchar (50)

 

alamat

varchar (200)

 

 

Membuat koneksi

Lalu kita akan membuat suatu file php untuk koneksi dengan database belajarphp di MySQL, beri file ini dengan nama koneksi berekstensi *.php (koneksi.php), skripnya adalah seperti dibawah ini :

 

<?php

$dbname = ‘belajarphp’;

$link = mysql_connect(“localhost”,”root”,”") or die(“Koneksi gagal.”);

$db = mysql_select_db($dbname, $link) or die(“Tidak dapat memilih database”);

?>

 

Membuat desain CSS

Agar tampilan halaman seragam baik itu dalam bentuk font (style huruf) dan lain sebagainya, ada baiknya kita mendesainnya terlebih dahulu dengan CSS (Cascading Style Sheet). Maka kita buat saja sebuah file berekstensi *.css dengan nama stylelogin (stylelogin.css) dengan skrip sebagai berikut:

 

a:link {

            color: #0000FF;

            text-decoration: none;

}

a:visited {

            text-decoration: none;

            color: #9900FF;

}

a:hover {

            text-decoration: none;

            color: #3366FF;

}

a:active {

            text-decoration: none;

            color: #000000;

}

a {

            font-family: Tahoma;

}

.style1 {

            font-size: x-large;

            font-weight: bold;

            font-family:Tahoma

            }

.style2 {

            font-family:Tahoma

            }

.style3 {

            font-size: x-small;

            font-family:Tahoma

            }

 

Membuat form login

Form login ini nantinya akan digunakan user untuk melakukan login menuju halaman utama. Tampilannya adalah seperti dibawah ini.

form-login

 

Form Login

 

Beri nama file ini dengan nama login (login.php), skripnya adalah seperti dibawah ini.

 

<html>

<head>

<title>.:Login</title>

<link href=”stylelogin.css” rel=”stylesheet” type=”text/css” />

</head>

<script>

document.write(‘<link rel=”SHORTCUT ICON” href=” http://localhost/belajarphp/gambar/it_beastie.jpg”>’);

</script>

 

<body>

<table width=”20%”>

  <tr>

    <td class=”style1″>Login Anggota</td>

  </tr>

  <tr>

    <td><form name=”login” method=”post” action=”qlogin.php”>

      <table width=”100%”>

        <tr>

          <td class=”style2″>Username</td>

          <td><div align=”center” class=”style2″>:</div></td>

          <td><input type=”text” name=”username” size=”20″ maxlength=”20″ /></td>

        </tr>

        <tr>

          <td class=”style2″>Password</td>

          <td><div align=”center” class=”style2″>:</div></td>

          <td><input type=”password” name=”password” size=”20″ maxlength=”32″ /></td>

        </tr>

        <tr>

          <td colspan=”3″><div align=”right”>

          <input type=”submit” value=”Login” /> | <a href=”daftar.php”>Daftar</a></div></td>

          </tr>

      </table>

      </form> </td>

  </tr>

  <tr>

    <td class=”style3″><div align=”center”>copyright &copy; 2009. Hak cipta di lindungi Alloh SWT</div></td>

  </tr>

</table>

</body>

</html>

 

Memproses Login

Form login yang kita buat sebelumnya, akan melakukan sebuah proses ketika user mengklik tombol login, maka kita akan membuat file pemroses login, beri nama qlogin dengan ekstensi *.php (qlogin.php). lihat pada file login.php di baris skrip <form name=”login” method=”post” action=”qlogin.php”>, form login menggunakan method POST, dan action-nya dilakukan oleh file ini (qlogin.php), action akan dilakukan setelah user mengklik tombol login pada form login, berikut adalah skrip file qlogin.php.

 

<?php

session_start();

 

//koneksi database

require_once(“koneksi.php”);

 

 

//pilih database

mysql_select_db($database);

 

//deklarasi variabel

$username=$_POST['username'];

$password=md5($_POST['password']);

 

//ambil data dari database

$sql=”select * from ANGGOTA where username=’$username’”;

$hasil=mysql_query($sql) or die (“Query salah:”.mysql_error());

 

//output variabel

$num=mysql_num_rows($hasil);

$row=mysql_fetch_array($hasil);

 

//jika variabel bernilai 0 atau salah

if ($num==0 OR $password!=$row['password']) {/*1*/

     //arahnya kesini

             echo “<script>

             alert(‘Login gagal’);

             parent.location = ‘login.php’;

             </script>”;

//jika variabel tidak 0       

}/*1*/ else {/*2*/

              //jika benar arahnya kesini

             $_SESSION['login']=1;

             header(“Location:utama.php”);

}/*2*/

?>

 

Pertama adalah menyertakan file koneksi ke database (require_once(“koneksi.php”);), karena file ini akan mengambil data dari database. Lalu memilih database (mysql_select_db($database);) dan memeriksa isian dari user dengan data di database pada field username ($username=$_POST['username'];) dan password ($password=md5($_POST['password']);), lalu mengambil datanya dari database ($sql=”select * from ANGGOTA where username=’$username’”; $hasil=mysql_query($sql) or die (“Query salah:”.mysql_error());).

 

Login gagal

Ini terjadi karena user salah dalam mengetikkan username atau password atau keduanya, jika hal ini terjadi maka setelah user mengklik tombol login akan tampil sebuah pesan “Login gagal”, berikut tampilannya.

login-gagal

Login gagal

 

Perhatikan baris ini :

 

$num=mysql_num_rows($hasil);

$row=mysql_fetch_array($hasil);

 

if ($num==0 OR $password!=$row['password']) {

             echo “<script>

             alert(‘Login gagal’);

             parent.location = ‘login.php’;

              </script>”;}

….

 

Namun jika login berhasil maka user akan mendapat akses menuju ke halaman utama.

 

Halaman Utama

Halaman ini dapat di akses setelah user berhasil melakukan login pada form login, berikut tampilan halaman utama.

halaman-utama

 

Halaman Utama

 

Buat file dengan nama utama berekstensi *.php (utama.php), berikut adalah skrip halaman utama:

 

<?php

session_start();

if(!isset($_SESSION['login']))

{

   echo “<script>

   alert(‘Anda belum login’);

   parent.location = ‘login.php’;

   </script>”;

} else {

?>

<html>

<head>

<title>.: Halaman Utama</title>

<link href=”stylelogin.css” rel=”stylesheet” type=”text/css” />

</head>

<script>

document.write(‘<link rel=”SHORTCUT ICON” href=” http://localhost/belajarphp/gambar/it_beastie.jpg”>’);

</script>

 

<body>

<span class=”style2″>Anda berhak mengakses halaman ini

</span><br /><br />

<a href=”logout.php”>Logout</a>

</body>

</html>

<?php

}

?>

 

Terkadang ada saja user yang mencoba mengakali masuk ke halaman utama tanpa login, dengan cara langsung mengetikkan URL address halaman utama pada browser. Dalam hal ini cobalah dari form login, tanpa melakukan login anda ketikan http://localhost/belajarphp/login/utama.php  pada URL di browser, lihat hasilnya, apakah anda berhasil masuk ke halaman utama??.  Jika anda benar mengetikkan skripnya, anda pasti akan mendapati sebuah pesan bahwa “anda belum login”, seperti gambar dibawah ini.

belum-login1

Belum Login

 

Perhatikan skrip pada qlogin.php:

 

…..

else {

       $_SESSION['login']=1;

        header(“Location:utama.php”);

}

 

Jika pada form login, data yang di isikan user cocok dengan yang tersimpan di database maka baris skrip diatas akan dijalankan. Dibuatkan terdahulu sebuah session login, jika bernilai = 1/ benar ($_SESSION['login']=1;) maka akan di arahkan menuju ke halaman utama (header(“Location:utama.php”);). Dan perhatikan juga skrip pada utama.php.

 

<?php

session_start();

if(!isset($_SESSION['login']))

{

   echo “<script>

   alert(‘Anda belum login’);

   parent.location = ‘login.php’;

   </script>”;

} else {

?>

 

…. (Isi halaman utama) …

 

<?php

}

?>

 

Skrip diawali dengan sebuah session start dan fungsi isset hal ini adalah untuk menginisiasi apakah session login pada qlogin sudah ada atau belum, jika belum maka pesan error anda belum login akan muncul (echo “<script> alert (‘Anda belum login’);   parent.location = ‘login.php’; </script>”;), jika sudah maka isi halaman utama akan ditampilkan atau dapat diakses (…. else {?>…. (Isi halaman utama) …)

 

Logout

Pada halaman utama terdapat sebuah link bertuliskan logout, jika anda mengklik link tersebut maka anda akan keluar dari halaman utama menuju kembali ke halaman login. Setelah user mengklik logout pada halaman utama maka akan muncul pesan bertuliskan “Anda telah logout” lalu klik “Ok” maka user pun kembali ke halaman login.

logout

Logout

 

Setelah kembali ke halaman login, cobalah tekan tombol back pada browser anda, apakah anda berhasil masuk kembali ke halaman utama??. Jika berhasil, maka periksa lagi skrip yang anda buat pada file utama.php, itu pasti terjadi kesalahan.

 

Skripnya adalah seperti dibawah ini, lalu simpan dengan nama logout (logout.php).

 

<?php

session_start();

unset($_SESSION['login']);

session_destroy();

?>

<script>

            alert(“Anda Telah Logout”);

            parent.location = “login.php”;

</script>

 

Session login di unset (unset($_SESSION['login']);) dan memunculkan sebuah pesan peringatan (<script> alert(“Anda Telah Logout”); parent.location = “login.php”; </script>) dibuat dengan javascript.

 

Halaman Registrasi

Lalu bagaimana jika user yang belum mempunyai account untuk mengakses halaman utama??. Buatlah account pada form daftar dengan cara pada form login klik daftar, maka akan muncul tampilan seperti dibawah ini :

registrasi

Registrasi

 

Isikan semua field isian (username, password, nama dan alamat) lalu klik kirim maka data user akan disimpan ke dalam database, berilah file ini dengan nama daftar (daftar.php) skripnya adala seperti dibawah ini.

 

<html>

<head>

<title>.: Daftar Member Baru</title>

<link href=”stylelogin.css” rel=”stylesheet” type=”text/css” />

</head>

<script>

document.write(‘<link rel=”SHORTCUT ICON” href=” http://localhost/belajarphp/gambar/it_beastie.jpg”>’);

</script>

<body>

<table width=”35%”>

  <tr>

    <td class=”style1″>Daftar Anggota Baru</td>

  </tr>

  <tr>

    <td><form name=”daftar” method=”post” action=”qdaftar.php”>

    <table width=”100%”>

      <tr>

        <td class=”style2″>Username *)</td>

        <td><div align=”center”>:</div></td>

        <td><input type=”text” name=”username” size=”20″ maxlength=”20″ /></td>

      </tr>

      <tr>

        <td class=”style2″>Password *)</td>

        <td><div align=”center”>:</div></td>

        <td><input type=”password” name=”password” size=”20″ maxlength=”32″ /></td>

      </tr>

      <tr>

        <td class=”style2″>Nama *)</td>

        <td><div align=”center”>:</div></td>

        <td><input type=”text” name=”nama” size=”40″ maxlength=”50″ /></td>

      </tr>

      <tr>

        <td valign=”top” class=”style2″>Alamat *)</td>

        <td valign=”top”><div align=”center”>:</div></td>

        <td><label>

          <textarea name=”alamat” cols=”30″ rows=”3″></textarea>

        </label></td>

      </tr>

      <tr>

        <td colspan=”3″><div align=”center”>

        <input type=”submit” value=”Kirim” />

        <input type=”reset” value=”ulangi” />

        | <a href=”login.php”>Batal</a></div></td>

        </tr>

    </table></form>

    </td>

  </tr>

  <tr>

    <td><div align=”center” class=”style3″>copyright &copy; 2009. Hak cipta di lindungi Alloh SWT</div></td>

  </tr>

</table>

</body>

</html>

 

Memproses Registrasi

Setelah user mengklik tombol kirim pada form daftar maka proses selanjutnya akan di proses oleh sebuah file pemroses registrasi. Beri saja nama qdaftar (qdaftar.php) sebagai pemroses registrasi data-data user, skripnya adalah seperti dibawah ini.

 

 

<?php

session_start();

 

//koneksi database

require_once(“koneksi.php”);

 

//pilih database

mysql_select_db($database);

 

//deklarasi variabel

$username=$_POST['username'];

$password=md5($_POST['password']);

$nama=$_POST['nama'];

$alamat=$_POST['alamat'];

$stop=0;

 

//string SQL

$sql=”select username from ANGGOTA”;

$hasil=mysql_query($sql) or die (“Query salah:”.mysql_error());

 

//validasi entri

if ($username==”") {//1

    echo  “<script>

            alert(‘Username harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

            }//1

elseif (strlen($password) ==0){//2

    echo “<script>

            alert(‘Password harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

}//2

elseif (strlen($nama)==0) {//3

    echo “<script>

            alert(‘Nama harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

}//3

elseif (strlen($alamat)==0) {//4

    echo “<script>

            alert(‘Nama harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

}//4

else {//5

 

//periksa duplikasi username

while($row=mysql_fetch_array($hasil)) {//6

   if ($username==$row['username']) {//7

        echo “<script>

                alert(‘Cari username yang lain’);

                        parent.location = ‘daftar.php’;

                </script>”;

                        $stop=1;

                        break;

   }//7

}//6

 

if(stop==0){//8

    $sql=”insert into ANGGOTA values (‘$username’, ‘$password’, ‘$nama’, ‘$alamat’)”;

            $hasil=mysql_query($sql) or die (“Query salah:”.mysql_error());

            echo “<script>

            alert(‘Data anda telah disimpan’);

             </script>”;

            echo”<a href=’login.php’> Klik disini <a/> untuk melakukan login”;

}//8

}//5

?>

<title>.: Daftar Membar Baru</title>

<script>

document.write(‘<link rel=”SHORTCUT ICON” href=” http://localhost/belajarphp/gambar/it_beastie.jpg”>’);

</script>

 

Pada form login, semua field isian harus diisi sebelum mengklik tombol kirim karena jika tidak maka akan muncul pesan peringatan, seperti dibawah ini.

validasi-isian

Validasi isian

 

Untuk hal diatas perhatikan baris skrip dibawah ini:

 

….

//validasi entri

if ($username==”") {

    echo  “<script>

            alert(‘Username harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

            }

elseif (strlen($password)==0){

    echo “<script>

            alert(‘Password harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

}

elseif (strlen($nama)==0) {

    echo “<script>

            alert(‘Nama harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

}

elseif (strlen($alamat)==0) {

    echo “<script>

            alert(‘Nama harus diisi’);

            parent.location = ‘daftar.php’;

             </script>”;

}

….

 

Jika user memasukan username yang telah dipakai sebelumnya oleh user lain maka akan muncul peringatan seperti gambar dibawah ini

duplikasi-user

 

Duplikasi user

Untuk hal diatas perhatikan baris skrip dibawah ini:

 

…..

//deklarasi variabel

$stop=0;

…..

 

//periksa duplikasi username

while($row=mysql_fetch_array($hasil)) {

   if ($username==$row['username']) {

        echo “<script>

                alert(‘Cari username yang lain’);

                        parent.location = ‘daftar.php’;

                </script>”;

                        $stop=1;

                        break;

   }

}

 

Jika isian user lengkap dan benar (tidak terjadi duplikasi username) maka klik lah tombol kirim untuk menyimpan data maka akan muncul pesan bahwa user berhasil menyimpan datanya ke dalam database.

simpan-data

Simpan data

 

Klik Ok maka akan muncul gambar seperti dibawah ini:

proses-akhir-registrasi

Proses akhir registrasi

 

Tambahan

Perhatikan fungsi hash MD5 pada isian password, perhatikan baris skrip pada file qdaftar.php :

 

//deklarasi variabel

$username=$_POST['username'];

$password=md5($_POST['password']);

$nama=$_POST['nama'];

$alamat=$_POST['alamat'];

 

Perhatikan juga baris skrip pada file qlogin.php:

//deklarasi variabel

$username=$_POST['username'];

$password=md5($_POST['password']);

 

Ini berfungsi untuk mengenkripsi nilai password yang user isikan pada field password di form daftar, misalnya seorang user mengisikan password dengan nilai ‘1234’ maka akan di enkripsi menjadi ‘81dc9bdb52d04dc20036dbd8313ed055’, dengan panjang 32 karakter dengan format heksadesimal itulah kenapa panjang field password saya buat 32 saat membuat database.

enkripsi-password

Enkripsi password

 

Berikut adalah piranti lunak yang saya gunakan :

 

  1. XAMPP 1.6.4 (Apache 2.2.6, MySQL  5.0.45, PHP 5.2.4, PHPMyAdmin 2.11.1);
  2. MySQL Front 2.5
  3. Browser Google Chrome ver 1.0.154.46

 

Kiranya sekian saja dulu perjumpaan kita kali ini, selamat mencoba aplikasi ini, ayo kita terus belajar dan belajar agar lepas dari kebodohan.

2 Responses to "Login Authentication dengan PHP"

bagus banget …
cuma saya mau tanya nih….gimana caranya..begitu login, muncul data lengkap (dari tabel registrasi) siapapun yang login.

Jadi gambarannya : siA login muncul data siA, si B login muncul data si B dst, mohon bantuannya bang! udah mentok nih…
thanks buat responnya!!

Coba pake session mas… nanti saya coba post yang model begitu deh

doakan saya punya waktu luang untuk mengurusi blog ini oke

Leave a Reply

Stupidmeter

  • 5,748 Kilostupid

Dimulai dari sesuatu yang bodoh

Inilah dunia kami, inilah cara pandang kami, beginilah kami bercerita, beginilah kami menyikapi, beginilah kami menyoroti, semuanya terserah kami karena memang ini dunia kami, dunia yang bebas bodoh walopun ngga pinter (tapi yang paling penting ya ngga bodoh *halah*).



Rendy Fiktowo's Facebook profile



Soulmate

Penanggalan

February 2009
F S S M T W T
« Jan   Mar »
 12345
6789101112
13141516171819
20212223242526
2728  

Kamu di :

IP

Arsip

Teu Ngarti??

A cluster the hymn of love, droop above that carpet!! then wind, slowly sent the fingers to the rock of heart

TTimeless
OOrderly
WWitty
OOdd

Name Acronym Generator
From Go-Quiz.com

Twitter gue