Monday, March 26, 2007

Login dengan menggunakan PHP dan MySQL

Login dengan menggunakan PHP dan MySQL
Halaman web menurutku adalah suatu halaman rumah di dalam dunia maya, disini kita dapat menampilkan tentang segala Inspirasi, Imajinasi, Mimpi maupun Uneg – Uneg sekalipun. Ibarat sebuah rumah yang mempunyai pintu dan kunci, suatu halaman web juga dapat di amankan dengan menggunakan beberapa cara :
1.Menerapkan Login & Password dengan system .htaccess
2.Menerapkan Login & Password dengan menggunakan session PHP dan MySQL
3.Dll.

Untuk bagian pertama sangat sederhana, karena ini memanfaatkan kelebihan yang di miliki oleh apache. Dalam tulisan kali ini saya akan mendokumentasikan hasil belajar saya menggunakan session pada PHP dan MySQL. Mungkin pada tulisan kali ini sangat newbies banget ya…(cos selama ini pegang PERL, bukan PHP he he he). Ada beberapa hal yang harus kita perhatikan dalam membuat halaman login dengan menggunakan session pada PHP dan MySQL, beberpa hal tersebut antara lain :
1.Pastikan form login adalah form dari server kita.
2.Amankan input text untuk user dan password,metoda dan format data.
3.Hindari penggunaan register global (untuk PHP v 4.2.0 keatas sdh disable).
4.Expired time dari login yang dilakukan.
5.Pastikan file yang tidak boleh diakses tidak dapat dipanggil secara langsung.
Berhubung udah mulai ngantuk, mungkin saya langsung to the point aja deh… Langkah-langkahnya adalah sebagai berikut:
Jika anda mencoba dari komputer stand-alone, jalankan dulu webserver dan database server anda. Untuk gampangnya, gunakan saja XAMPP
DatabaseSetiap user yang login akan dicek username dan passwordnya dari tabel user yang terdapat pada database, dalam percobaan kali ini kita membuat database dengan nama auth.
create database auth;
use auth;
create table users(id int auto_increment not null,username varchar(20) not null,password varchar(35) not null,primary key(id));
Setelah itu isilah data pada tabel tbuser tersebut dengan username admin dan password adminpass. Scriptnya adalah sebagai berikut.
insert into users values (’admin’,md5(’adminpass’));
Sekarang Anda sudah memiliki sebuah database db_test yang di dalamnya terdapat sebuah tabel tbuser dan sudah ada satu row data dengan username = admin dan password = adminpass dalam bentuk yang sudah di-hash dengan fungsi md5.
Setelah membuat database seperti langkah diatas, maka selanjutnya kita akan mebuat tampilan halaman login dengan script HTML dibawah dengan menggunkan metode post. Buat file login.html yang isinya sebagai berikut :
username: password:
Setelah halaman login terbuat, saat nya kita membuat script PHP untuk memproses hasil inputan pada halaman login. Sekarang mari kita buat script PHP dengan nama lopro.php (lopro bukan sembarang nama, melainkan singkatan dari login proses he… he… he…)
session_start();
$server = “localhost”; //ganti sesuai server Anda$username = “root”; //ganti sesuai username Anda$password = “”; //ganti sesuai password Anda$db_name = “auth”; //ganti sesuatu nama database Anda
$db = mysql_connect($server,$username,$password) or DIE(”Connection to database failed, perhaps the service is down !!”);mysql_select_db($db_name) or DIE(”Database name not available !!”);
$login = mysql_query(”select * from users where (username = ‘” . $_POST[’username’] . “‘) and (password = ‘” . md5($_POST[’password’]) . “‘)”,$db);$rowcount = mysql_num_rows($login);if ($rowcount == 1) {$_SESSION[’username’] = $_POST[’username’];header(”Location: securedpage.php”);}else{header(”Location: lopro.php”);}?>
Ehmmm biar lebih paham… mari kita bedah satu - satu script diatas, diawal script ada session_start();.session_start() dimaksudkan untuk menginisialisasi suatu data session. Dia akan membuat sebuah session baru atau melanjutkan session yang sudah ada berdasarkan pada session yang sedang terjadi akibat dari pertukaran data session lewat request GET, POST atau cookie. Setelah inisialisasi session terbentuk maka langkah selanjutnya adalah melakukan koneksi dengan MySQL, jika koneksi dengan MySQL sudah berhasil maka proses select ke table users untuk username dan password yang di isikan pada halaman login.html
Jika username dan password dapat ditemukan lalu script akan mengarahkan user ke halaman securedpage.php, sebaliknya jika username atau password salah maka user akan diarahkan kembali ke halaman lopro.php.
Sekarang kita perlu membuat sebuah script atau dokumen lagi yaitu securedpage.php. File securedpage.php adalah suatu halaman web yang merupakan halaman yang boleh diakses atau dimasuki user yang sudah berhasil login dengan benar. Mengapa dinamakan securedpage.php? Hal tersebut karena file securedpage.php nantinya tidak akan bisa diakses langsung dari browser sebelum suatu user melakukan login dengan benar. Pada halaman securedpage.php ini juga akan berisi link untuk logout sehingga session dari user tersebut bisa hilang dan kemudian kembali ke halaman lopro.php. Berikut ini adalah script dari file securedpage.php.
session_start();if (!isset($_SESSION[’username’])) {header(”Location: lopro.php”);}?>
secured page with sessionlogout
Simpan script di atas dengan nama securedpage.php. Kita lihat pada bagian atas dari script terdapat suatu mekanisme untuk memeriksa apakah session yang bernama ‘username’ sudah ada atau belum. Jika belum ada maka secara otomatis user atau pengunjung web tersebut akan diarahkan kembali ke halaman login di lopro.php.
Pada body halaman securedpage.php terdapat link untuk melakukan logout. Link tersebut mengarah ke file logoutpage.php. Berikut ini adalah script untuk melakukan logout-nya.
unset($_SESSION[’username’]);session_destroy();header(”Location: lopro.php”);?>
Simpan script di atas dengan nama logoutpage.php. Script tersebut digunakan untuk menghapus atau menghancurkan data session Anda sehingga orang lain atau pengunjung web lainnya tidak bisa melihat halaman securedpage.php yang sudah Anda akses dengan username dan password Anda. Begitu session sudah di hapus dengan fungsi session_destroy() maka langsung Anda akan diarahkan ke halaman login di lopro.php.
Letakkan semua file-file yang sudah Anda buat tadi pada folder yang menjadi root dari web server Apache Anda dan kemudian Anda bisa coba script diatas untuk dijalankan pada browser. Pastikan dulu semua service yang dibutuhkan sudah jalan terlebih dahulu, yaitu service apache dan mysql. Untuk mencoba script-nya Anda bisa membuka browser dan ketik http://localhost/lopro.php

No comments: