14 Tutorial Membuat Halaman Login Sederhana Yang Aman
Kebutuhan:
- Webserver dengan dukungan PHP
- Myslq Database Server
Secara sederhana, cara kerjanya adalah sbb:
- Ketika user memasukkan username dan password-nya, maka yang pertama kali dilakukan adalah mengeceknya dalam database apakah username tersebut telah terdaftar.
- Jika telah terdaftar dan berhasil melakukan login, maka sang user akan diberi sebuah session yang diambil dari usernamenya
- Jika kesemuanya tidak sesuai maka sang user akan diredirect ke halaman login.php, sehingga terlihat seperti diam ditempat.
Pertama-tama kita buat databasenya
create database coba; use coba; CREATE TABLE IF NOT EXISTS `users` ( `username` varchar(20) NOT NULL, `password` varchar(200) NOT NULL, PRIMARY KEY (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
selanjutnya kita buat file-file php-nya
config.php
<?php //membuat koneksi ke database mysql_connect("localhost", "root", "admin"); //localhost = nama server-nya //root = user mysql //admin = password user root //memilih database mysql_select_db("coba"); ?>
login.php
<?php //memulai session session_start(); //cek adanya session, jika session sudah ada maka diarahkan ke index.php if (ISSET($_SESSION['username'])){ header("location: index.php"); } ?> <form method="post" action="cek.php"> <pre>Username <input name="username" type="text"> Password <input name="password" type="password"> <input name="submit" value="Login" type="submit"> Bukan Member? Silahkan Daftar <a href="signup.php">Daftar</a> </pre> </form>
cek.php
<?php //memulai session session_start(); //koneksi ke database include "config.php" ; //mengambil data dari form $username = $_POST['username']; $password = $_POST['password']; //enkripsi password dengan md5 $password_md5 = md5($password); //cek username dan password dari database $perintah = "select * from users where username='$username'&&password='$password_md5'"; $perintah_di_query = mysql_query($perintah); $ketersediaan = mysql_num_rows($perintah_di_query); //Cek adanya username dan password di database dilanjutkan dengan membuat session if ($ketersediaan >= 1 ){ $_SESSION['username'] = $username; header("location: index.php"); }else{ header("location: login.php"); } ?>
index.php
<?php //memulai session session_start(); //cek adanya session if (ISSET($_SESSION['username'])){ echo "Anda Login Sebagai "; echo $_SESSION['username']; echo "<br><a href='logout.php'>logout</a>"; //jika tidak ada session }else{ header("location: login.php"); } ?> <html><body> <br><br><h2> Home Page <br><br></h2> </body></html>
logout.php
<?php //memulai session session_start(); //cek adanya session, jika session ada maka akan di unset dan dilanjutkan dengan destroy session if(ISSET($_SESSION['username'])) { UNSET($_SESSION['username']); } header("location: index.php"); session_destroy(); ?>
signup.php
<form method="post" action="signup_process.php"> <pre><h2>Form Pendaftaran</h2> Username <input name="username" type="text"> Password <input name="password" type="password"> <input name="submit" value="Daftar" type="submit"> </pre> </form>
signup_process.php
<?php include "config.php"; ///mengambil data dari form $username = $_POST['username']; $password = $_POST['password']; $password_md5 = md5($password); //cek pengisian data if($username=='' || $password==''){ echo "Data tidak lengkap<br--><a href=signup.php>Back</a>"; //jika data sudah lengkap, dilanjutkan input data ke database }else{ $perintah = "insert into users values ('$username', '$password_md5')"; $perintah_di_query = mysql_query($perintah); //Jika input data berhasil, dilanjutkan dengan pemberitahuan pendaftaran berhasil if ($perintah_di_query) { echo "Daftar berhasil, silakan <a href='index.php'>login</a>"; //jika input data gagal, dilanjutkan dengan pemberitahuan pendaftaran gagal }else{ echo "Daftar gagal atau username telah terdaftar silakan <a href='signup.php'>Ulangi</a> atau <a href='login.php'>Login</a>"; } } ?>
- Pengujian dilakukan dengan membuat sebuah user dan melakukan proses login, jika berhasil maka Home Page akan tampil.