Kali ini saya akan memberikan contoh penggunaan database, session, dan enkripsi MD5 untuk menjadikannya sebagai halaman login yang cukup 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>";
}
}
?>

0 komentar:
Post a Comment