menjadi kebutuhan wajib. Tanpa adanya login rasa-rasanya ada yang kurang dari
suatu situs. Dengan login kita bisa mengatur siapa saja yang berhak masuk ke
halaman tertentu dan siapa saja yang tidak boleh. Disamping itu secara tidak
langsung, login bisa digunakan untuk mencatat siapa saja yang sedang online, siapa
saja yang sering mengunjungi situs kita dan seterusnya.
OK basa-basinya udahan deh, kita mulai saja. Kita lihat dulu apa yang diperlukan
untuk membuat aplikasi login user ini :
1. PHP 4.0 atau lebih.
2. Webserver, bisa pake Apache, IIS, PWS atau yang lain yang support PHP
3. Database server MySQL
4. Editor, disarankan pake Dreamweaver MX untuk lebih mudahnya atau pake
Notepad jika pengin buat secara manual.
5. Dan tentunya harus ada niat, harus ada waktu dan harus ada kemauan.
Membuat Tabel yang Diperlukan
Pertama-tama mari kita buat dulu tabel yang diperlukan dengan MySQL. Di sini saya
contohkan tabel user dengan field sbb :
Jika diperlukan, bisa ditambahkan field yang lain. Mari langsung aja buat query-nya
di MySQL :
CREATE TABLE `user` (`username` VARCHAR (20) NOT NULL, `nama` VARCHAR
(30) NOT NULL, `password` VARCHAR (50) NOT NULL, PRIMARY
KEY(`username`), UNIQUE(`username`));
Catatan : Khusus di FTI Hosting, kita bisa dengan mudah membuat tabel di atas
dengan fasilitas MySQL manager.
Setelah table berhasil dibuat, kemudian isi dengan beberapa data (record) sebagai
contoh. Misalnya dengan perintah sbb :
INSERT INTO user VALUES ('achma', 'Achmad Solichin', 'nasigoreng');
INSERT INTO user VALUES ('okti', 'Okti Ragil', 'ragils');
INSERT INTO user VALUES ('sri', 'Sri Widhiyanti', 'sri');
Catatan : Di sini, field password tidak dienkript terlebih dahulu. Jika Anda
menginginkan field password ini dienkript bisa menggunakan fungsi password()
atau fungsi md5() dari MySQL.
Membuat Tampilan Awal Login
Buatlah file dengan nama login.php sebagai tampilan awal halaman login, sebagai
berikut :
<html>
<head>
<title>Login here</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
table {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
input {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
height: 20px;
}
-->
</style>
</head>
<body>
<div align="center">
<form action="periksa.php" method="post" name="login">
<table width="286" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr bgcolor="#FF6633">
<td height="19" colspan="2" align="center" valign="middle">
<font color="#FFFFFF">LOGIN DI SINI</font></td>
</tr>
<tr>
<td width="106" height="27"> </td>
<td width="180"> </td>
</tr>
<tr>
<td height="18" align="right" valign="middle">Username : </td>
<td valign="middle">
<input name="username" type="text" id="username" size="20"></td>
</tr>
<tr>
<td height="18" align="right" valign="middle">Password : </td>
<td valign="middle">
<input name="password" type="password" id="password" size="20"></td>
</tr>
<tr>
<td height="19"> </td>
<td></td>
</tr>
<tr>
<td height="18" valign="top"><!--DWLayoutEmptyCell--> </td>
<td valign="middle">
<input name="login" type="submit" id="login" value=" Login "></td>
</tr>
<tr>
<td height="28"> </td>
<td></td>
</tr>
<tr bgcolor="#FF6633">
<td height="18" colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
</table>
</form>
</div>
</body>
</html>
include “koneksi.php”;
atau
require “koneksi.php”;
Setelah koneksi berhasil, maka tinggal kita periksa apakah tombol login yang
terdapat di halaman login.php ditekan atau tidak menggunakan fungsi isset() yaitu:
…..
if(isset($_POST[‘login’]))
……
Jika tombol ditekan maka ambil variable dari form textbox yang diisi oleh user
__dalam hal ini variable username dan password__ dan disimpan dalam variable
sementara. Perhatikan perintah :
……
$username = $_POST[‘username’];
$password = $_POST[‘password’];
……
Kita sudah mendapatkan variable username dan password, selanjutnya kita periksa
apakah username dan password ini sesuai dengan data yang ada di database. Kita
pilih (select) record di tabel user yang sesuai dengan variable username dan
password tsb
……
$sql = mysql_query("SELECT * FROM user WHERE username='$username' &&
password='$password'");
$num = mysql_num_rows($sql);
……
Fungsi mysql_query() digunakan untuk mengeksekusi suatu query atau perintah
mysql, jadi seolah-olah kita mengetikkan perintah secara langsung di prompt mysql.
Sedangkan fungsi mysql_num_rows() digunakan untuk menghitung jumlah record
yang dihasilkan dari suatu perintah (query ) mysql. Dalam program di atas, variable
$num akan berisi jumlah record yang dihasilkan dari $sql. Isi variable $num ini kita
gunakan untuk memeriksa apakah username dan password benar-benar berada di
tabel user. Jika ditemukan tepat 1 record maka username dan password benar dan
redirect halaman berhasil.php. Namun jika tidak ditemukan, maka berarti
username dan atau passwordnya salah, kembalikan ke halaman login.php. Untuk
redirect di sini menggunakan javascript. Perhatikan potongan program berikut :
…….
if($num==1) {
// login benar //
$_SESSION['user'] = $username;
$_SESSION['passwd'] = $password;
?><script language="JavaScript">alert('Anda berhasil login');
document.location='berhasil.php'</script><?
} else {
// jika login salah //
?><script language="JavaScript">alert('Username atau password Anda salah');
document.location='login.php'</script><?
}
…….
Jika berhasil, sebelum diredirect ke halaman berhasil.php maka terlebih dahulu kita
set variable session bernama $_SESSION[‘user’] dan $_SESSION[‘passwd’]. Variabel
session ini digunakan untuk memeriksa apakah user tertentu berhak masuk ke suatu
halaman ataukah tidak.
Membuat Halaman untuk Login berhasil dan halaman logout
Jika login berhasil maka user akan masuk ke halaman berhasil.php. Isi dari halaman
ini ya tergantung Anda, sesuai dengan halama web Anda. Sebagai contoh sederhana,
mari kita buat halaman sebagai berikut :
<?
session_start();
//periksa apakah user telah login atau memiliki session
if(!isset($_SESSION[‘user’]) || !isset($_SESSION[‘passwd’])) {
?><script language=’javascript’>alert(‘Anda belum login. Please login dulu’);
document.location=’login.php’</script><?
} else {
?>
<html>
<head>
<title>Berhasil</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="746" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td width="746" height="23" align="center" valign="top"><font face="Verdana, Arial,
Helvetica, sans-serif">Selamat
Datang <? echo $_SESSION['user'] ?> <a
href="logout.php"><strong>LOGOUT</strong></a></font></td>
</tr>
<tr>
<td height="88"> </td>
</tr>
<tr align="center" valign="middle">
<td height="33"><font color="#FF0000" size="5" face="Arial, Helvetica, sans-serif">ANDA
BERHASIL LOGIN !!</font></td>
</tr>
<tr>
<td height="62"> </td>
</tr>
</table>
</body>
</html>
<? } ?>
Dalam halaman berhasil.php di atas terdapat link yang mengarah ke logout.php. Kita
akan membuat logout.php dimana jika user melakukan logout (meng-klik link logout
di atas) maka session yang dia miliki akan dihapus. Berikut untuk file logout.php :
<?
session_start();
//periksa apakah user telah login atau memiliki session
if(!isset($_SESSION[‘user’]) || !isset($_SESSION[‘passwd’])) {
?><script language=’javascript’> document.location=’login.php’</script><?
} else {
unset($_SESSION);
session_destroy();
?> script language=’javascript’> document.location=’login.php’</script><?
}
?>
Untuk menghapus variable session kita bisa menggunakan fungsi unset() dan
session_destroy(). Setelah session dihapus maka user dikatakan sudah logout dan
tidak bisa masuk ke halaman berhasil.php selama user belum login lagi.
Nama Field | Type | Panjang |
Username | Varchar | 20 |
Nama | Varchar | 30 |
Password | Varchar | 50 |
Jika diperlukan, bisa ditambahkan field yang lain. Mari langsung aja buat query-nya
di MySQL :
CREATE TABLE `user` (`username` VARCHAR (20) NOT NULL, `nama` VARCHAR
(30) NOT NULL, `password` VARCHAR (50) NOT NULL, PRIMARY
KEY(`username`), UNIQUE(`username`));
Catatan : Khusus di FTI Hosting, kita bisa dengan mudah membuat tabel di atas
dengan fasilitas MySQL manager.
Setelah table berhasil dibuat, kemudian isi dengan beberapa data (record) sebagai
contoh. Misalnya dengan perintah sbb :
INSERT INTO user VALUES ('achma', 'Achmad Solichin', 'nasigoreng');
INSERT INTO user VALUES ('okti', 'Okti Ragil', 'ragils');
INSERT INTO user VALUES ('sri', 'Sri Widhiyanti', 'sri');
Catatan : Di sini, field password tidak dienkript terlebih dahulu. Jika Anda
menginginkan field password ini dienkript bisa menggunakan fungsi password()
atau fungsi md5() dari MySQL.
Membuat Tampilan Awal Login
Buatlah file dengan nama login.php sebagai tampilan awal halaman login, sebagai
berikut :
<html>
<head>
<title>Login here</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
table {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
input {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
height: 20px;
}
-->
</style>
</head>
<body>
<div align="center">
<form action="periksa.php" method="post" name="login">
<table width="286" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr bgcolor="#FF6633">
<td height="19" colspan="2" align="center" valign="middle">
<font color="#FFFFFF">LOGIN DI SINI</font></td>
</tr>
<tr>
<td width="106" height="27"> </td>
<td width="180"> </td>
</tr>
<tr>
<td height="18" align="right" valign="middle">Username : </td>
<td valign="middle">
<input name="username" type="text" id="username" size="20"></td>
</tr>
<tr>
<td height="18" align="right" valign="middle">Password : </td>
<td valign="middle">
<input name="password" type="password" id="password" size="20"></td>
</tr>
<tr>
<td height="19"> </td>
<td></td>
</tr>
<tr>
<td height="18" valign="top"><!--DWLayoutEmptyCell--> </td>
<td valign="middle">
<input name="login" type="submit" id="login" value=" Login "></td>
</tr>
<tr>
<td height="28"> </td>
<td></td>
</tr>
<tr bgcolor="#FF6633">
<td height="18" colspan="2" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
</table>
</form>
</div>
</body>
</html>
Dari program tampilan awal di atas, kita bisa lihat bahwa program menggunakan
form inputan sbb :
- username bertype text
- password bertype password
- tombol login bertype submit
Jika tombol login ditekan maka isi form akan diproses di halaman periksa.php
sesuai dengan action pada tag form
Membuat Halaman Pemeriksaan Login
Setelah tampilan awal kita buat, maka kita buat halaman pemeriksaan login untuk
memeriksa apakah username dan password yang diinputkan benar atau salah.
Buatlah file dengan nama periksa.php sebagai berikut :
form inputan sbb :
- username bertype text
- password bertype password
- tombol login bertype submit
Jika tombol login ditekan maka isi form akan diproses di halaman periksa.php
sesuai dengan action pada tag form
Membuat Halaman Pemeriksaan Login
Setelah tampilan awal kita buat, maka kita buat halaman pemeriksaan login untuk
memeriksa apakah username dan password yang diinputkan benar atau salah.
Buatlah file dengan nama periksa.php sebagai berikut :
<?php
session_start();
#**************** koneksi ke mysql *****************#
$host = "database";
$user = "0211500314";
$pass = "8925603";
$dbname = "db_0211500314";
$conn = mysql_connect($host,$user,$pass);
if($conn) {
//select database
$sele = mysql_select_db($dbname);
if(!$sele) {
echo mysql_error();
}
}
#***************** akhir koneksi ******************#
#jika ditekan tombol login
if(isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = mysql_query("SELECT * FROM user WHERE username='$username' &&
password='$password'");
$num = mysql_num_rows($sql);
if($num==1) {
// login benar //
$_SESSION['user'] = $username;
$_SESSION['passwd'] = $password;
?><script language="JavaScript">alert('Anda berhasil login');
document.location='berhasil.php'</script><?
} else {
// jika login salah //
?><script language="JavaScript">alert('Username atau password Anda
salah'); document.location='login.php'</script><?
}
}
?>
Setelah tampilan awal kita buat, kita tinggal periksa apakah username dan password
yang dimasukkan valid atau tidak. Username dan password diterima jika ditemukan
di database. Mari kita analisa program di atas :
Untuk mengaktifkan session kita menggunakan fungsi session_start(). Fungsi ini
sebaiknya diletakkan di awal program (paling atas). Berikutnya lakukan koneksi ke
database MySQL kita, menggunakan username dan password kita. Untuk aplikasi
yang memerlukan koneksi database di setiap halaman, sebaiknya bagian koneksi ini
dimasukkan dalam file khusus, sehingga setiap kita memerlukan koneksi database
kita tinggal panggil filenya langsung menggunakan include atau require. Misalnya
kita simpan sebagai file koneksi.php maka untuk memanggil file tsb kita bisa
menggunakan perintah :
session_start();
#**************** koneksi ke mysql *****************#
$host = "database";
$user = "0211500314";
$pass = "8925603";
$dbname = "db_0211500314";
$conn = mysql_connect($host,$user,$pass);
if($conn) {
//select database
$sele = mysql_select_db($dbname);
if(!$sele) {
echo mysql_error();
}
}
#***************** akhir koneksi ******************#
#jika ditekan tombol login
if(isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = mysql_query("SELECT * FROM user WHERE username='$username' &&
password='$password'");
$num = mysql_num_rows($sql);
if($num==1) {
// login benar //
$_SESSION['user'] = $username;
$_SESSION['passwd'] = $password;
?><script language="JavaScript">alert('Anda berhasil login');
document.location='berhasil.php'</script><?
} else {
// jika login salah //
?><script language="JavaScript">alert('Username atau password Anda
salah'); document.location='login.php'</script><?
}
}
?>
Setelah tampilan awal kita buat, kita tinggal periksa apakah username dan password
yang dimasukkan valid atau tidak. Username dan password diterima jika ditemukan
di database. Mari kita analisa program di atas :
Untuk mengaktifkan session kita menggunakan fungsi session_start(). Fungsi ini
sebaiknya diletakkan di awal program (paling atas). Berikutnya lakukan koneksi ke
database MySQL kita, menggunakan username dan password kita. Untuk aplikasi
yang memerlukan koneksi database di setiap halaman, sebaiknya bagian koneksi ini
dimasukkan dalam file khusus, sehingga setiap kita memerlukan koneksi database
kita tinggal panggil filenya langsung menggunakan include atau require. Misalnya
kita simpan sebagai file koneksi.php maka untuk memanggil file tsb kita bisa
menggunakan perintah :
include “koneksi.php”;
atau
require “koneksi.php”;
Setelah koneksi berhasil, maka tinggal kita periksa apakah tombol login yang
terdapat di halaman login.php ditekan atau tidak menggunakan fungsi isset() yaitu:
…..
if(isset($_POST[‘login’]))
……
Jika tombol ditekan maka ambil variable dari form textbox yang diisi oleh user
__dalam hal ini variable username dan password__ dan disimpan dalam variable
sementara. Perhatikan perintah :
……
$username = $_POST[‘username’];
$password = $_POST[‘password’];
……
Kita sudah mendapatkan variable username dan password, selanjutnya kita periksa
apakah username dan password ini sesuai dengan data yang ada di database. Kita
pilih (select) record di tabel user yang sesuai dengan variable username dan
password tsb
……
$sql = mysql_query("SELECT * FROM user WHERE username='$username' &&
password='$password'");
$num = mysql_num_rows($sql);
……
Fungsi mysql_query() digunakan untuk mengeksekusi suatu query atau perintah
mysql, jadi seolah-olah kita mengetikkan perintah secara langsung di prompt mysql.
Sedangkan fungsi mysql_num_rows() digunakan untuk menghitung jumlah record
yang dihasilkan dari suatu perintah (query ) mysql. Dalam program di atas, variable
$num akan berisi jumlah record yang dihasilkan dari $sql. Isi variable $num ini kita
gunakan untuk memeriksa apakah username dan password benar-benar berada di
tabel user. Jika ditemukan tepat 1 record maka username dan password benar dan
redirect halaman berhasil.php. Namun jika tidak ditemukan, maka berarti
username dan atau passwordnya salah, kembalikan ke halaman login.php. Untuk
redirect di sini menggunakan javascript. Perhatikan potongan program berikut :
…….
if($num==1) {
// login benar //
$_SESSION['user'] = $username;
$_SESSION['passwd'] = $password;
?><script language="JavaScript">alert('Anda berhasil login');
document.location='berhasil.php'</script><?
} else {
// jika login salah //
?><script language="JavaScript">alert('Username atau password Anda salah');
document.location='login.php'</script><?
}
…….
Jika berhasil, sebelum diredirect ke halaman berhasil.php maka terlebih dahulu kita
set variable session bernama $_SESSION[‘user’] dan $_SESSION[‘passwd’]. Variabel
session ini digunakan untuk memeriksa apakah user tertentu berhak masuk ke suatu
halaman ataukah tidak.
Membuat Halaman untuk Login berhasil dan halaman logout
Jika login berhasil maka user akan masuk ke halaman berhasil.php. Isi dari halaman
ini ya tergantung Anda, sesuai dengan halama web Anda. Sebagai contoh sederhana,
mari kita buat halaman sebagai berikut :
<?
session_start();
//periksa apakah user telah login atau memiliki session
if(!isset($_SESSION[‘user’]) || !isset($_SESSION[‘passwd’])) {
?><script language=’javascript’>alert(‘Anda belum login. Please login dulu’);
document.location=’login.php’</script><?
} else {
?>
<html>
<head>
<title>Berhasil</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="746" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td width="746" height="23" align="center" valign="top"><font face="Verdana, Arial,
Helvetica, sans-serif">Selamat
Datang <? echo $_SESSION['user'] ?> <a
href="logout.php"><strong>LOGOUT</strong></a></font></td>
</tr>
<tr>
<td height="88"> </td>
</tr>
<tr align="center" valign="middle">
<td height="33"><font color="#FF0000" size="5" face="Arial, Helvetica, sans-serif">ANDA
BERHASIL LOGIN !!</font></td>
</tr>
<tr>
<td height="62"> </td>
</tr>
</table>
</body>
</html>
<? } ?>
Dalam halaman berhasil.php di atas terdapat link yang mengarah ke logout.php. Kita
akan membuat logout.php dimana jika user melakukan logout (meng-klik link logout
di atas) maka session yang dia miliki akan dihapus. Berikut untuk file logout.php :
<?
session_start();
//periksa apakah user telah login atau memiliki session
if(!isset($_SESSION[‘user’]) || !isset($_SESSION[‘passwd’])) {
?><script language=’javascript’> document.location=’login.php’</script><?
} else {
unset($_SESSION);
session_destroy();
?> script language=’javascript’> document.location=’login.php’</script><?
}
?>
Untuk menghapus variable session kita bisa menggunakan fungsi unset() dan
session_destroy(). Setelah session dihapus maka user dikatakan sudah logout dan
tidak bisa masuk ke halaman berhasil.php selama user belum login lagi.
Tidak ada komentar:
Posting Komentar