You are on page 1of 5

TUTORIAL Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial

Membuat Halaman Login dengan PHP

Membuat Halaman
Login dengan PHP
Halaman login sering kali digunakan untuk otentifikasi user yang
memasuki sebuah halaman web. Apabila Anda berniat membuat halaman
login dengan PHP, tentu Anda memerlukan session dan cookies dalam
pembuatan sistem otentifikasi pengunjung situs web Anda. Mungkin
Anda pemula PHP yang ingin belajar session dan cookies dan tertarik
ingin belajar membuat halaman login seperti ini?

T
idak bisa dipungkiri bahwa dalam sebuah halaman web. Saat ini tabel user_data masih kosong.
keamanan akses di sebuah halaman Mungkin Anda ingin mencoba membuat Sekarang kita masukkan data user yang
web merupakan suatu hal yang halaman login seperti ini. Kita akan mem- nantinya akan Anda berikan untuk
sangat penting untuk diperhatikan. Data bahas bagaimana cara membuat halaman mencoba untuk login dalam halaman login
yang terdapat dalam suatu halaman web login seperti ini, sekaligus kita dapat melihat yang nantinya Anda buat.
seringkali merupakan data penting yang perbandingan proses login dengan session mysql> insert into user_data values
tidak boleh diperlihatkan sembarangan dibandingkan menggunakan cookies yang (‘Stefan A.Y.’, ‘stefan’, ‘sembarang’);
kepada orang yang tidak berhak. juga merupakan kemampuan bahasa script
Contohnya tidak mungkin seluruh data PHP. Tulisan sebenarnya ini lebih ditujukan Semua script PHP yang kita buat
yang menyangkut privasi seseorang dalam bagi Anda yang mungkin masih asing dan nantinya akan terkoneksi ke database login
suatu halaman web langsung ditampilkan belum mengenal session dan cookies. dalam mysql sebagai user ‘php’. Berikut ini
kepada semua pengunjung yang membuka Saat ini, PHP merupakan bahasa script adalah perintah-perintah untuk memberikan
situs web tertentu. open source yang masih seringkali wewenang bagi database user ‘php’ untuk
Sedangkan Internet merupakan dunia digunakan untuk menciptakan halaman mengakses tabel yang terdapat dalam
yang luas di mana setiap orang dapat web yang dinamis terutama di lingkungan database login.
dengan mudah mengakses situs Anda. berbasiskan Linux. Dengan didukung oleh mysql> GRANT ALL PRIVILEGES ON
Untuk itu, hak akses user terhadap data apache server dan database MySQL, PHP login.* TO php@localhost identified by
yang terdapat dalam situs web perlu dapat menghasilkan halaman web dinamis ‘php’ ;
dibatasi. Cara yang biasa digunakan untuk yang cukup powerful. Nantinya database
membatasi hak akses seseorang terhadap yang diperlukan untuk otentifikasi user id Sekarang database sudah siap dan kita
isi sebuah website, yaitu dengan dan password akan kita buat dengan tinggal membuat script-script PHP untuk
melakukan proses login terlebih dahulu. menggunakan database MySQL. menghasilkan sebuah halaman login.
Ketika Anda memasuki sebuah halaman Sekarang kita akan membuat database Pertama-tama untuk mempermudah kita
web yang seperti ini, sebelum dapat yang akan digunakan untuk menyimpan user dalam mengakses database, buatlah
mencari data yang diperlukan dari website id dan password yang dapat digunakan sebuah file yang bernama ‘connect.php’
tersebut Anda diminta untuk memasukkan untuk login dalam sebuah halaman web. yang berisi variabel yang akan digunakan
user id yang merupakan pengenal Anda Untuk membuat database dan table yang dalam koneksi dengan database. Tujuan
dan password yang hanya diketahui oleh diperlukan, maka Anda dapat menjalankan kita membuat file connect.php, yaitu
Anda sendiri, sehingga hanya user yang mysql sebagai user root dan memberikan supaya apabila sewaktu-waktu terjadi
telah memiliki haklah yang diizinkan untuk perintah-perintah SQL berikut: perubahan informasi mengenai database
mengakses situs tersebut. mysql> CREATE DATABASE login ; dapat dengan mudah memperbaiki
Untuk dapat mengakses situs ini, user informasi program dengan mengganti isi
yang login harus memberikan user id dan mysql>CONNECT login ; variabel yang terdapat dalam connect.php.
password dengan benar. User id dan // file connect.php
password yang telah diberikan akan mysql> CREATE TABLE user_data ( <?php
divalidasi dengan database yang sudah ada name VARCHAR(40) NOT NULL, $host=”localhost”; // server dimana
di server. Apabila user id terdaftar dan user_id VARCHAR(20) NOT NULL, database disimpan
password yang diberikan juga cocok dengan password VARCHAR(20) NOT NULL, $db_username=”php”; // nama user
data yang terdapat dalam database, maka PRIMARY KEY(user_id) yang dipakai untuk connect ke
user akan diberi wewenang untuk masuk ke ); database

54 INFOLINUX JUNI 2004 www.infolinux.web.id


Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial TUTORIAL
Membuat Halaman Login dengan PHP

<td><input name=”user_password”
type=”password”></td>
</tr>
<tr>
<td></td>
<td><input name=”submit” type=
”submit” value=”Login”></td>
</tr>
</table>
</form>
</body>
</html>


Halaman sesudah login.


Script PHP pada form ini bertugas untuk
$db_password=”php”; // password printf(“Error %d:%s\n”,mysql_errno(), mencocokkan data yang dimasukkan user
database mysql_error()); dengan data yang terdapat dalam database.
$db_name=”login”; // database exit(); Setelah user menekan tombol submit, maka
yang digunakan } halaman sess_login akan dimuat sekali lagi
?> if(($row=mysql_fetch_array($r)) && dengan memberikan perintah login pada
($user_password==$row[2] && script php. Barulah script PHP yang terdapat
Simpanlah script php ini ke dalam $user_password!=””)) pada awal program dilaksanakan. Bila
sebuah file yang bernama ‘connect.php’ { otentifikasi berhasil, maka akan dipanggil
$reg_username=$row[0]; halaman yang bernama sess_default.php,
Menggunakan session $reg_userid=$user_id; sedangkan bila gagal akan dicetak pesan
Sekarang kita akan membuat form login $reg_userpassword=$user_password; kesalahan dalam memasukkan user id atau
menggunakan session. Form ini yang akan header(“location: sess_default.php”); password.
digunakan user untuk login, di dalamnya } else Pada awal script dilaksanakan perintah
terdapat script PHP yang bertugas untuk { session_start(), perintah ini menandakan
menjalankan proses login. Apabila proses session_unset(); bahwa kita memulai sesi baru. Dilanjutkan
login lancar maka akan ditampilkan script session_destroy(); dengan mendaftarkan variabel-variabel
file sess_default.php. echo “Login gagal! Periksa user ID dan session. Variabel ini nantinya bisa digunakan
Berikut ini adalah script form login. Kita pasword anda<br>”; dalam halaman web Anda yang sebenarnya
misalkan file sess_login.php sebagai form echo “<a href=\”sess_login.php\”> seperti informasi mengenai nama user,
login: Back to login</a>”; umur, dan lain-lain yang sedang masuk ke
// file sess_login.php exit(); dalam situs web Anda.
<?php } Dalam pembahasan kali ini, kita hanya
if($action==”login”) } menggunakan tiga buah variabel dan tiga
{ ?> kolom pada tabel yang terdapat dalam
session_start(); <html> database mysql, namun pada penerapan
session_register(“reg_username”); <head> yang sebenarnya Anda dapat menam-
session_register(“reg_userid”); <title>Login dengan Session</title> bahkan variabel lain yang berisi data pribadi
session_register(“reg_userpassword”); </head> user yang sedang login.
require “connect.php”; <body> Tentu saja setelah otentifikasi form login
<h1 align=”center”>Please Login</h1> telah berhasil, kita akan mempersilakan user
if(!($link=mysql_pconnect($host, <form method=”post” action=”sess_ untuk mengakses halaman yang
$db_username,$db_password))) login.php?action=login”>
{ <table align=”center”>
printf(“%s\n”,mysql_error()); <tr>
http://www.distrolinux.net
exit(); <td>Enter your ID:</td>
} <td><input name=”user_id” type= Sedia CD Distro Linux & BSD
if(!($r=mysql_db_query(“$db_name”, ”text”></td> Murah, Bergaransi (10Rb/CD)
”select * from user_data where </tr> Email : info@distrolinux.net
user_id=’$user_id’”))) <tr>
HP/SMS : 0812 1876 981
{ <td>Enter your Password:</td>

www.infolinux.web.id INFOLINUX JUNI 2004 55


TUTORIAL Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Membuat Halaman Login dengan PHP

Setelah user dapat memasuki halaman


web melalui proses login dan ingin
mengakhiri pekerjaannya, user harus melalui
proses logout terlebih dahulu. Proses logout
ini penting karena melalui proses ini data
mengenai user akan dilupakan oleh browser.
Apabila Anda lupa untuk melakukan logout,
dan ada orang lain lain yang kebetulan
menggunakan komputer yang sama
kemungkinan dapat menyamar sebagai
Anda untuk memasuki halaman tersebut
dengan menggunakan user id dan password
Anda. Bukankah hal ini cukup berbahaya.
Berikut ini empat baris script php yang
digunakan untuk menghapus semua
variabel session yang telah Anda gunakan:
// File sess_logout.php
<?php
session_start();
session_unset();
session_destroy();
header(“location: sess_login.php”);
?>


Login dengan session.

sesungguhnya akan ditampilkan padanya. Anda gunakan untuk ditampilkan pada Dengan begini semua variabel session
Kita misalkan halaman ini diberi nama halaman html Anda. Dari halaman yang telah ada akan dihapus dari ingatan
sess_default.php. Berikut ini contoh halaman sess_default.php inilah link-link ke halaman browser yang Anda gunakan. Apabila
web yang dituju setelah proses login: yang lain akan dimulai. Namun ada sewaktu-waktu Anda ingin memberi
// file sess_default.php kemungkinan user yang iseng langsung kesempatan pada user untuk melakukan
<?php menambahkan teks: default.php ke dalam logout Anda tinggal menambahkan hyperlink
session_start(); url sehingga halaman tersebut dapat tampil pada halaman web Anda yang mengarah
if(!session_is_registered(‘reg_userid’)) tanpa harus login terlebih dahulu. kepada halaman sess_logout.php ini.
{ Maka dari itu, untuk menjaga keamanan Sekarang proses login yang telah Anda
header(“location: sess_login.php”); halaman web tersebut sebaiknya pada buat sudah selesai. Cobalah untuk membuka
exit(); setiap halaman web yang ingin halaman sess_login.php pada browser
} disembunyikan terhadap user yang belum kesayangan Anda. Untuk saat ini Anda
?> login pada script diatas kita memeriksa diminta untuk memasukkan user id ‘stefan’
<html> apakah user id sudah terdaftar sebagai dan user password-nya ‘sembarang’. Maka
<head> variabel session. akan terbuka halaman baru yang bernama
<title>Halaman Setelah Login</title> <?php sess_default. Di sini akan Anda tempatkan
<body> session_start(); isi dari halaman web Anda. Halaman lainnya
Selamat datang <?echo “$reg_username”; if(!session_is_registered(‘reg_userid’)) dapat dituju dengan menempatkan
?><br> { hyperlink-nya pada halaman ini.
Anda telah login sebagai <?echo header(“location: sess_login.php”);
“$reg_userid”;?><br> exit(); Menggunakan cookies
<a href=”sess_logout.php”>Logout</a> } Setelah mengetahui pembuatan login
</body> ?> menggunakan session, sekarang kita
</html> membuat halaman login menggunakan
Script ini akan melakukan pengecekan cookies. Sebelum membuat sebuah
Tag yang terdapat di dalam tag terhadap variabel session ‘reg_userid’. halaman login menggunakan cookies, Anda
<body> dapat Anda ganti dengan Apabila variabel session belum terdaftar tetap perlu melakukan perintah-perintah
halaman html Anda sendiri. Variabel maka user diminta untuk melakukan pembuatan database dan tabel user_data
session yang telah terdaftar seperti prosedur login melalui halaman pada MySQL seperti di atas. Salah satu
reg_username maupun reg_userid dapat sess_login.php. perbedaan menggunakan session diban-

56 INFOLINUX JUNI 2004 www.infolinux.web.id


Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial TUTORIAL
Membuat Halaman Login dengan PHP

dingkan dengan menggunakan cookies ”$row[2]”); header(“location: cookie_default.php”);


yaitu karena variabel session juga disimpan return 1; exit();
di server sedangkan variabel cookies hanya } else } else {
disimpan di komputer client. return 0; echo “Login gagal! Periksa user ID dan
Sebelum kita mulai membuat halaman } password anda<br>”;
login, kita akan mempersiapkan function function hapusCookies() echo “<a href=\”cookie_login.php\
yang akan dipergunakan oleh script PHP { ”>Back to login</a>”;
selanjutnya. Kita akan membuat sebuah file setcookie(“cookie_username”,””); exit();
function.php yang berisi function auten- setcookie(“cookie_userid”,””); }
tifikasiUser yang nantinya berguna untuk setcookie(“cookie_password”,””); }
mencocokkan data cookies dengan } ?>
database user yang ada. ?> <html>
Di dalam file function.php juga terdapat <head>
function untuk menghapus cookies yang Function autentifikasiUser akan mengem- <title>Login dengan cookies</title>
telah ada. Nantinya function hapusCookies balikan nilai 1 bila data user terdapat dalam </head>
akan digunakan dalam proses logout. database sekaligus mengisikannya dalam <body>
Function yang terdapat dalam file variabel cookies dengan perintah setcookie() <h1 align=”center”>Please Login</h1>
function.php dapat digunakan dengan namun akan mengembalikan nilai 0 bila <form method=”post” action=”cookie_
terlebih dahulu dengan memanggilnya proses membandingkan data tidak berhasil login.php?action=login”>
melalui satu baris script berikut. Sehingga dengan baik. <table align=”center”>
kita tidak perlu mengetikkannya berulang- Sekarang saatnya kita akan membuat <tr>
ulang yang akan menyebabkan source code form login dengan cookies. Berikut ini adalah <td>Enter your ID:</td>
program menjadi panjang. contoh script-script yang bisa digunakan: <td><input name=”user_id” type=
require “function.php”; // file cookie_login.php ”text”></td>
<?php </tr>
Berikut ini adalah script php yang if($action==”login”) <tr>
terdapat dalam file function.php: { <td>Enter your Password:</td>
// File function.php require “function.php”; <td><input name=”user_password”
<?php hapusCookies(); type=”password”></td>
include “connect.php”; if(autentifikasiUser($user_id,$user_ </tr>
function autentifikasiUser($user, password)) { <tr>
$password)
{
global $host, $db_username,
$db_password, $db_name;
if(!($conn=mysql_pconnect($db_host,
$db_username,$db_password))){
printf (“Error %s\n”,mysql_error());
return 0;
}
if(!($result=mysql_db_query
(“$db_name”,”select * from user_data
where user_id=’$user’”)))
{
printf (“Error %s\n”,mysql_error());
IKLAN
return 0;
}
if(($row=mysql_fetch_array($result)) &&
($password==$row[2] && $password
!=””)) {
setcookie(“cookie_username”,
”$row[0]”);
setcookie(“cookie_userid”,”$row[1]”);
setcookie(“cookie_password”,

www.infolinux.web.id INFOLINUX JUNI 2004 57


TUTORIAL Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Membuat Halaman Login dengan PHP

<td></td>
<td><input name=”submit” type=
”submit” value=” Login “></td>
</tr>
</table>
</form>
</body>
</html>

Sama halnya seperti script yang kita buat


dengan session, apabila user memasukkan
user id dan password-nya dengan benar
(user id ‘stefan’ dan user password ‘sem-
barang’), maka perjalanan akan dilanjutkan
menuju halaman yang sesungguhnya (dalam
hal ini cookie_default.php).
Berikut ini adalah contoh script
cookie_default.php:
// File cookie_default.php
<?php
require “function.php”;
if(!autentifikasiUser($cookie_userid,$cookie_password))
{


Mempersiapkan database.
header(“location: cookie_login.php”);
exit(); { untuk digunakan dalam membuat halaman
} header(“location: cookie_login.php”); login pada web. Kedua cara di atas tidak
?> exit(); ada yang baik maupun yang buruk,
<html> } keduanya dapat digunakan sesuai dengan
<head> ?> kebutuhan. Apabila dibutuhkan untuk
<title>Halaman Setelah Login</title> memeriksa data user setiap kali memasuki
<body> Script ini perlu dicantumkan pada awal halaman web yang dilindungi, Anda dapat
Selamat datang <?echo “$cookie_ setiap halaman yang ingin dilindungi. menggunakan variabel cookies. Namun bila
username”;?><br> Dengan demikian, halaman tersebut tidak Anda menginginkan kemudahan atau tidak
Anda telah login sebagai <?echo dapat dibuka oleh user dengan memerlukan validasi dengan database di
“$cookie_userid”;?><br> mengetikkannya secara langsung dengan setiap halaman yang dilindungi, Anda dapat
<a href=”cookie_logout.php”>Logout menambahkannya pada url tanpa melalui menggunakan session dalam proses
</a> login terlebih dahulu. autentifikasi.
</body> Untuk proses logout menggunakan Saat ini, baru terdapat satu user di
</html> cookies kita cukup menghapus isi vaiabel dalam database login. Untuk menambahkan
cookies dengan menggunakan perintah data user baru Anda dapat membuat form
File cookie_default.php sama keguna- yang sama dengan waktu menciptakannya, baru menggunakan script PHP, semua
annya dengan file sess_default.php, di yaitu dengan perintah setcookies(). proses memasukkan data ke dalam tabel di
sinilah awal halaman web yang sesungguh- Berikut ini merupakan proses logout database dilakukan oleh script php
nya yang ingin ditampilkan kali pertama halaman otentifikasi yang menggunakan sehingga Anda tidak perlu mengetikkannya
pada user yang telah otentifikasi. cookies: langsung pada command line MySQL
Namun sebelum tag html yang // File cookie_logout.php seperti saat kita memasukkan user ‘stefan’
sebenarnya perlu dilakukan pencocokan <?php ke dalam database login.
kembali antara data yang terdapat dalam require “function.php”; Kita telah merasakan bahwa membuat
cookies dengan data yang terdapat dalam hapusCookies(); halaman login dengan session maupun
database. Sama halnya dengan session. header(“location: cookie_login.php”); cookies bukan hal yang sulit. Dengan
<?php ?> berbekal pengetahuan tentang session dan
require “function.php”; cookies, Anda dapat membuat login untuk
if(!autentifikasiUser($cookie_userid, Mungkin dari benak Anda muncul website Anda sendiri. Selamat mencoba!
$cookie_password)) pertanyaan cara manakah yang lebih baik Stefan (stefan_ay@plasa.com)

58 INFOLINUX JUNI 2004 www.infolinux.web.id