MODUL 11 MEMBUAT LOGIN USER Halaman web adalah suatu halaman rumah di dalam dunia maya, di sini 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 modul ini akan menjelaskan pengamanan halaman web menggunakan session pada PHP dan MySQL. Ada beberapa hal yang harus kita perhatikan dalam membuat halaman login dengan menggunakan session pada PHP dan MySQL, beberapa 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 di-disable secara default). 4. Expired time dari login yang dilakukan. 5. Pastikan file yang tidak boleh diakses tidak dapat dipanggil secara langsung. Langkah-langkahnya adalah sebagai berikut: Jika anda mencoba dari komputer stand-alone, jalankan dulu webserver dan database server anda. Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #1/8 1. Database Setiap user yang login akan dicek username dan passwordnya dari tabel user yang terdapat pada database, dalam percobaan kali ini kita membuat database dengan nama login. Latihan 1 : create database login; create table users ( username varchar(20) not null, password varchar(35) not null, level varchar(1) not null, primary key(username) ); 2. Setelah itu isilah data pada tabel users tersebut dengan username, password dan level untuk menentukan hak akses. Sekarang Anda sudah memiliki sebuah database login. Kemudian buatlah halaman koneksi database yang dapat dipanggil. Simpan dengan nama koneksimysql.php Latihan 2 : <?php $koneksi_oke=mysql_connect("localhost","root",""); ?> 3. Setelah membuat database dan koneksi seperti langkah diatas, maka selanjutnya kita akan mebuat tampilan halaman login dengan script HTML dibawah dengan menggunkan metode post. Buat file login.php yang isinya sebagai berikut : Latihan 3 : <html> <?php Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #2/8 include ("koneksimysql.php") ?> <head> <title>Login </title> <style type="text/css"> <!-.style4 {color: #333333; } .style11 {color: #FFFFFF} --> </style></head> <body> <form method=post action=proses.php> <table width="350" height="102" border="0"> <tr><td width="100"><div align="center" class="style4"> <div align="left"> <pre>Nama : </pre> </div></div></td> <td width="200"><input name="username" type="text" value="" size="30"></td> </tr> <tr><td><div align="left"> <pre class="style4">Password : </pre> </div></td> <td><input name=pas type="password" size= 30></td> </tr> <tr> <td height="21" colspan="4"><div align="center"> <input name="login" type="submit" class="mainoption" id="login" value="Login"> </div></td> </tr> </table> </form> </body> </html> Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #3/8 Halaman yang akan terbuat: Nama : Password : Login 4. Setelah halaman index terbuat, saat nya kita membuat script PHP untuk memproses hasil inputan pada halaman login. Sekarang mari kita buat script PHP dengan nama proses.php. Latihan 4 : <?php include ("koneksimysql.php"); mysql_select_db("login"); $perintah="select * from users where username='$username' and password='$password' "; $isi_data=mysql_query($perintah); $row=mysql_fetch_array($isi_data); if ($row[username]==$username AND $row[password]=$password) { session_start(); session_register("namauser"); session_register("passuser"); $namauser=$row[username]; $passuser=$row[password]; if ($row[level]=='1') // ini untuk admin {header("location:tabelmaster.php");} else // kalau ini untuk user biasa {{header("location:user.php");} } } else Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #4/8 { print" <script> alert (\"anda salah login \"); history.back(-1); </script>"; } ?> Pertama yang dilakukan oleh proses diatas 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.php. Kemudian 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. 5. Jika username dan password dapat ditemukan lalu script akan mengarahkan user ke halaman tabelmaster.php (halaman ini diperuntukan untuk yang memiliki hak akses level 1), atau akan mengarahkan user ke halaman user.php (diperuntukan untuk user biasa) dan sebaliknya jika username atau password salah maka user akan diarahkan kembali ke halaman proses.php. Sekarang kita perlu membuat script atau dokumen yaitu tabelmaster.php dan user.php. File tabelmaster.php dan user.php adalah suatu halaman web yang merupakan halaman yang boleh diakses atau dimasuki user yang sudah berhasil login dengan benar. File tabelmaster.php dan user.php nantinya tidak akan bisa diakses langsung dari browser sebelum suatu user melakukan login dengan benar. Pada halaman tabelmaster.php dan user.php juga akan berisi link untuk logout sehingga session dari user tersebut bisa hilang dan kemudian kembali ke halaman proses.php. Berikut ini adalah script dari file tabelmaster.php dan user.php. Latihan 5 : tabelmaster.php <?php Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #5/8 include ("koneksimysql.php"); mysql_select_db("login"); $perintah="SELECT * FROM users"; $hasil=mysql_query($perintah); session_start(); if (!empty ($namauser) AND !empty ($passuser)) { echo("<H3>Selamat Datang Admin</H3>" .$namauser); echo("<br>"); echo("<br><a href=logout.php>Logout</a>"); } else { echo("Maaf, Untuk mengakses halaman ini "); echo("anda harus login terlebih dahulu<BR><BR><HR>"); echo("<A HREF='login.php'>Login</A>"); } ?> </body> </html> user.php <?php include ("koneksimysql.php"); mysql_select_db("login"); $perintah="SELECT * FROM users"; $hasil=mysql_query($perintah); session_start(); if (!empty ($namauser) AND !empty ($passuser)) { echo("<H3>Selamat Datang User</H3>" .$namauser); echo("<br>"); echo("<br><a href=logout.php>Logout</a>"); } else { echo("Maaf, Untuk mengakses halaman ini "); echo("anda harus login terlebih dahulu<BR><BR><HR>"); echo("<A HREF='login.php'>Login</A>"); Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #6/8 } ?> </body> </html> 6. 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 proses.php. Pada body halaman tabelmaster.php dan user.php terdapat link untuk melakukan logout. Link tersebut mengarah ke file logout.php. Berikut ini adalah script untuk melakukan logout-nya. Latihan 6 : <?php session_start(); session_destroy(); echo("Anda telah sukses keluar sistem<BR><BR>"); echo("<A HREF='login.php'>Ke Halaman Utama</A>"); ?> 7. Simpan script di atas dengan nama logout.php. Script tersebut digunakan untuk menghapus atau menghancurkan data session Anda sehingga orang lain atau pengunjung web lainnya tidak bisa melihat halaman tabelmaster.php dan user.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 proses.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/login.php. Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #7/8 Gambar 11.1 memperlihatkan contoh dari sebuah halaman yang dibuat dengan teknologi scripting yang baru saja kita pelajari. Halaman ini ialah halaman untuk login ke dalam sebuah web-based mail service. User dapat mengetikkan username di kotak teks username dan kata kuncinya di kotak password. Gambar 11.1 Contoh halaman login. Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 11) #8/8