Membuat Login dengan PHP dan MySQLAplikasi login User dalam suatu situs dinamis menggunakan php sudah hampir 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.


Cara Cepat Membuat Login dengan PHP dan MySQL

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.
Pertama-tama mari kita buat dulu tabel yang diperlukan dengan MySQL. Di sini saya 
contohkan tabel userdengan field sbb : 

Nama Field username  Type Varchar  Panjang 20 
Nama Field nama Type Varchar  Panjang 30 
Nama Field password Type Varchar  Panjang 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 bisadengan 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 passwordtidak 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.phpsebagai 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">&nbsp;</td> 
<td width="180">&nbsp;</td> 
</tr> 
<tr> 
<td height="18" align="right" valign="middle">Username :&nbsp;</td> 
<td valign="middle"> 
<input name="username" type="text" id="username" size="20"></td> 
</tr> 
<tr> 
<td height="18" align="right" valign="middle">Password :&nbsp;</td> 
<td valign="middle"> 
<input name="password" type="password" id="password" size="20"></td> 
</tr> 
<tr> 
<td height="19">&nbsp;</td> 
<td></td> 
</tr> 
<tr> 
<td height="18" valign="top"><!--DWLayoutEmptyCell-->&nbsp;</td> 
<td valign="middle"> 
<input name="login" type="submit" id="login" value=" Login "></td> 
</tr> 
<tr> 
<td height="28">&nbsp;</td> 
<td></td> 
</tr> 
<tr bgcolor="#FF6633"> 
<td height="18" colspan="2" valign="top"><!--DWLayoutEmptyCell-->&nbsp;</td> 
</tr> 
</table> 
</form> 
</div> 
</body> 
</html> 

Dari program tampilan awal di atas, kitabisa lihat bahwa program menggunakan 
form inputan sbb : 
-  username ber-type text 
-  password ber-type password 
-  tombol login ber-type submit 
Jika tombol login ditekan maka isi form akan diproses di halaman periksa.php
sesuai dengan action pada tag form

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.phpsebagai 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. Usernamedan password diterima jika ditemukan di database. Marikita 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.phpditekan 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 usernamedan password__ dan disimpan dalam variable 
sementara. Perhatikan perintah : 
…… 
$username = $_POST[‘username’]; 
$password = $_POST[‘password’]; 
…… 

Kita sudah mendapatkan variable usernamedan 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 $numakan berisi jumlah record yang dihasilkan dari $sql. Isi variable $num ini kita gunakan untuk memeriksa apakah usernamedan password benar-benar berada di tabel user. Jika ditemukan tepat 1 recordmaka 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.phpmaka terlebih dahulu kita set variable session bernama $_SESSION[‘user’] dan $_SESSION[‘passwd’]. Variabel session ini digunakan untuk memeriksa apakahuser 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'] ?>&nbsp;<a 
href="logout.php"><strong>LOGOUT</strong></a></font></td> 
</tr> 
<tr> 
<td height="88">&nbsp;</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">&nbsp;</td> 
</tr> 
</table> 
</body> 
</html> 
<? } ?>

Dalam halaman berhasil.php di atas terdapatlink 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.phpselama user belum login lagi. 

demikian langkah langkah membuat login dengan PHP dan Mysql, banyak sekali cara untuk membuat login. baca juga artikel tentang membuat menu dengan css.
loading...