Dalam pembuatan aplikasi ini kita membutuhkan database yang akan menyimpan data-data dari para anggota yang telah terdaftar. Buatlah database dengan MySQL sebagai berikut:
mysql> create database daftar;
mysql> create table anggota(
-> uname varchar(20),
-> pswd varchar(32));
Database tersebut terdiri dari satu tabel bernama “anggota” dan tabel tersebut memiliki 2 buah field yaitu uname untuk menyimpan user name dan pswd untuk menyimpan password. Mengapa field pswd ditentukan untuk memiliki 32 karakter? Kita akan bahas nanti.
Sekarang mula-mula kita akan buat dahulu halaman pendaftaran anggota. Skripnya diberikan pada listing 1.
Listing 1. Halaman pendaftaran <HTML> <HEAD> <TITLE> Sign Up </TITLE> </HEAD> <BODY> Isilah username dan password yang Anda inginkan <BR> <PRE> <FORM NAME="frmSignUp" METHOD="post" ACTION="process.php"> Username : <INPUT TYPE="text" NAME="uname"> Password : <INPUT TYPE="password" NAME="pswd"> <INPUT TYPE="submit" VALUE="Submit"> </FORM> </BODY> </HTML> |
Berikutnya kita akan membuat file process.php yang akan memproses pendaftaran kita tadi. Skripnya diberikan pada listing 2.
Listing 2. Halaman proses <HTML> <HEAD> <TITLE> Processing your Account </TITLE> </HEAD> <BODY> <? $uname = $_POST['uname']; $pswd = md5($_POST['pswd']); $host = "localhost"; $user = "root"; $pwd = "rahasia"; $db = "daftar"; $stop = 0; $sql = "select uname from anggota"; $conn = @mysql_connect($host,$user,$pwd) or die("Koneksi gagal : " . mysql_error()); mysql_select_db($db); $qry = mysql_query($sql) or die("Query salah : " . mysql_error()); while ($row = mysql_fetch_array($qry)) { if ($uname == $row['uname']) { echo "Username $uname was already chosen by someone else <BR>"; echo "Go back and choose another username"; $stop = 1; break; } } if ($stop==0) { $sql = "insert into anggota values ('$uname','$pswd')"; $qry = mysql_query($sql) or die("Query salah : " . mysql_error()); echo "Your account is successfully created <BR>"; echo "<A HREF='login.php'> Click here </A> to login"; } ?> </BODY> </HTML> |
Md5 hash menghasilkan 32 karakter dalam format heksadesimal. Itulah sebabnya mengapa field pswd dibuat bertipe data karakter dengan panjang 32 karakter. Dengan md5 hash ini password Anda akan disimpan dalam bentuk yang sangat sulit ditebak.
Pada skrip ini mula-mula diperiksa apakah username yang dipilih telah ada di dalam database. Jika telah ada, maka php akan memberikan peringatan bahwa username tersebut telah ada dan Anda dipersilakan membuat username baru. Jika belum ada, maka informasi username dan password Anda akan didaftarkan ke dalam database dan Anda akan diberitahu bahwa account Anda telah dibuat. Bandingkan dengan gambar di bawah ini
dan gambar di bawah ini
Setelah proses sign up berhasil, kini kita akan membuat halaman untuk login. Skripnya diberikan pada listing 3.
Listing 3. Halaman login <HTML> <HEAD> <TITLE> Login </TITLE> </HEAD> <BODY> Registered user log in: <BR> <PRE> <FORM NAME="frmLogIn" METHOD="post" ACTION="main.php"> Username : <INPUT TYPE="text" NAME="uname"> Password : <INPUT TYPE="password" NAME="pswd"> <INPUT TYPE="submit" VALUE="Submit"> </FORM> </PRE> New user please register <A HREF="signup.php"> here </A> </BODY> </HTML> |
Skrip ini akan diolah pada file main.php. Nah, skrip dari file main.php itu sendiri diberikan pada listing 4.
Listing 4. Pengolah login <HTML> <HEAD> <TITLE> Main Page </TITLE> </HEAD> <BODY> <? $uname = $_POST['uname']; $pswd = md5($_POST['pswd']); $host = "localhost"; $user = "root"; $pwd = "rahasia"; $db = "daftar"; $stop = 0; $sql = "select * from anggota where uname='$uname'"; $conn = @mysql_connect($host,$user,$pwd) or die("Koneksi gagal : " . mysql_error()); mysql_select_db($db); $qry = mysql_query($sql) or die("Query salah : " . mysql_error()); $num = mysql_num_rows($qry); $row = mysql_fetch_array($qry); if ($num==0) { echo "Username not found <BR>"; echo "Go back and try another username"; } else { if ($pswd!=$row['pswd']) { echo "Your password is incorrect <BR>"; echo "Go back and type the correct password"; } else { echo "You are successfully logged in"; } } ?> </BODY> </HTML> |
Namun sebenarnya skrip tersebut di atas belumlah selesai. Mengapa? Sebab skrip seperti di atas (sekalipun telah diberi “pagar” di sana-sini) tetap mudah ditembus oleh siapapun, bahkan Anda tidak perlu belajar menjadi hacker untuk dapat menembusnya.
Contoh mudah, isilah form login dengan data yang ada pada database Anda. Dengan sendirinya Anda akan login dan masuk ke halaman main.php yang bertuliskan “You are successfully logged in”. Sekarang tekan tombol “back” browser Anda, lalu setelah Anda tiba kembali ke halaman login, tekan tombol “forward”. Apa yang terjadi? Ya, Anda akan kembali masuk ke halaman main.php dan login dengan sukses. Itu artinya jika Anda lalai dan meninggalkan komputer Anda, orang lain dengan mudah akan masuk menggunakan account Anda.
Lalu bagaimana solusinya? Salah satu caranya adalah dengan menambahkan session ke dalam aplikasi tersebut. Dengan memeriksa apakah suatu variabel session pernah didaftarkan atau belum, maka aplikasi tersebut menjadi lebih aman. Dengan menggunakan solusi ini, fitur login/logout pada aplikasi kita akan terpecah menjadi lima file yang diberikan pada listing 5 hingga listing 9.
Listing 5. File login.php <HTML> <HEAD> <TITLE> Login </TITLE> </HEAD> <BODY> Registered user log in: <BR> <PRE> <FORM NAME="frmLogIn" METHOD="post" ACTION="cekpswd.php"> Username : <INPUT TYPE="text" NAME="uname"> Password : <INPUT TYPE="password" NAME="pswd"> <INPUT TYPE="submit" VALUE="Submit"> </FORM> </PRE> New user please register <A HREF="signup.php"> here </A> </BODY> </HTML> |
Listing 6. File cekpswd.php <? session_start(); $uname = $_POST['uname']; $pswd = md5($_POST['pswd']); $host = "localhost"; $user = "root"; $pwd = "rahasia"; $db = "daftar"; $sql = "select * from anggota where uname='$uname'"; $conn = @mysql_connect($host,$user,$pwd) or die("Koneksi gagal : " . mysql_error()); mysql_select_db($db); $qry = mysql_query($sql) or die("Query salah : " . mysql_error()); $num = mysql_num_rows($qry); $row = mysql_fetch_array($qry); if ($num==0 OR $pswd!=$row['pswd']) { header("Location: sorry.php"); } else { $_SESSION['login']=1; header("Location: main.php"); } ?> |
Listing 7. File main.php <? session_start(); if(!isset($_SESSION['login'])) { include("login.php"); } else { ?> <HTML> <HEAD> <TITLE> Main Page </TITLE> </HEAD> <BODY> You are successfully logged in <BR> You can access this application <BR> <BR> <A HREF="logout.php"> Log Out </A> </BODY> </HTML> <? } ?> |
File inilah yang nantinya bisa dikembangkan untuk menyusun aplikasi-aplikasi web yang diperuntukkan bagi mereka yang login. Sebelumnya pada bagian awal dari file ini diperiksa terlebih dahulu apakah variabel $_SESSION[‘login’] sudah pernah diinisiasi dengan fungsi isset(). Seandainya belum, itu artinya user yang mengakses halaman main.php belum login. Jika demikian, maka orang tersebut akan “diangkut” menuju ke halaman login.php untuk login terlebih dahulu. Apakah mungkin user yang belum login dapat langsung menuju ke halaman main.php? Mungkin saja apabila ia langsung mengetikkan “http://bla..bla..bla/main.php” di bagian address browser. Oleh karena itu harus diberi “satpam” agar user tersebut tidak main selonong saja.
Jika seandainya aplikasi Anda terdiri dari beberapa halaman, maka pada prinsipnya setiap halaman harus diberi skrip sebagai berikut:
<?
session_start();
if(!isset($_SESSION['login'])) {
include("login.php");
} else {
?>
Di bawah skrip ini baru diberikan tag-tag HTML atau skrip PHP lain yang menyusun aplikasi. Dengan demikian setiap halaman selalu memeriksa apakah variabel session $_SESSION['login'] telah diinisiasi. Jika belum, maka redirection akan beraksi dan “menendang” user untuk kembali ke halaman login.php.
Listing 8. File sorry.php <HTML> <HEAD> <TITLE> Sorry </TITLE> </HEAD> <BODY> Your user name or password is incorrect <BR> Sorry, you are not allowed to access this page </BODY> </HTML> |
User tersebut dapat mengklik tombol back di browser untuk kembali ke halaman login dan memasukkan username dan password yang benar.
Listing 9. File logout.php <? session_start(); unset($_SESSION['login']); session_destroy(); header("Location: login.php"); ?> |
Pada dasarnya fungsi header() tidak harus mengarahkan aplikasi ke file login.php. Bisa saja Anda membuat sebuah file lain yang bernama goodbye.php misalnya yang isinya adalah ucapan perpisahan.
Nah, selamat belajar mengembangkan aplikasi dengan menggunakan fitur login/logout.
Software Bamboomedia IT-313 Koneksi PHP MySql Software
PHP adalah Bahasa Scripting paling populer di web saat ini. Sebagian besar website di dunia memakai bahasa ini (PHP). Database MySQL juga dikenal sebagai database yang cepat, ringan dan powerful. Pada CD belajar ini akan ditunjukkan bagaimana belajar PHP secara simpel dengan bantuan Dreamweaver dan menghubungkan aplikasi Web Anda dengan database MYSQL secara cepat, praktis, tanpa kerumitan melalui fasilitas tersembunyi di Dreamweaver.
Anda akan belajar dengan kasus dan contoh nyata, yaitu membuat website untuk jasa perjalanan wisata (tour dan travel) sederhana dengan fasilitas reservasi, halaman contact, halaman berita, daftar produk dinamis dan halaman administrasi untuk insert data edit/update, dan hapus data. Dengan teknis yang sama, Anda bisa membangun situs dinamis yang lain. Tersedia juga contoh file situs yang sudah jadi dan file bantuan lain seperti file desain yang masih kosong untuk belajar, panduan untuk bahasa PHP dan file-file lain
Lihat Detail Bamboomedia IT-313 Koneksi PHP MySql Software
loading...
loading...