Selasa, 20 April 2010

Autentikasi Halaman Web dengan Cookie

Masalah pembatasan penggunaan, pemantauan dan pengendalian atas pengguna jaringan internet semakin lama semakin rumit. Salah satu segi teknis yang dapat menanggulangi masalah yang ada adalah autentikasi atau membatasi kewenangan pelanggan pada satu pelayanan tertentu, seperti menghabiskan bandwidth pada satu situs di internet.

HTTP cookie, web cookie, atau cookie saja, adalah serangkaian teks yang dikirimkan oleh server ke penjelajah web yang kemudian akan mengirimkannya kembali tanpa diubah ke server setiap kali penjelajah web mengakses situs web. HTTP cookies digunakan untuk melakukan otentikasi, penjejakan, dan memelihara informasi spesifik dari para pengguna, seperti preferensi pengguna atau daftar keranjang belanja elektronik mereka.


Cookies yang masih tersimpan di komputer dapat mempercepat akses ke situs web yang bersangkutan. Namun demikian, cookies dapat mengurangi ruang di cakram keras komputer dan memberi peluang bagi spyware yang menyebar melalui cookies untuk masuk ke komputer.

Berikut ini adalah contoh sederhana penggunaan fungsi cookie pada fungsi login :

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<title>Halaman Administrator</title>
<style type="text/css">
.inner {
margin: 200px auto;
padding: 20px;
width: 240px;
border: 1px solid #333;
}
</style>
</head><body>
<?php
ini_set('display_errors', 1);
define('_VALID', 1);// include file eksternal
require_once('./auth.php');
init_login();
validate();
?><h3>Simulasi Halaman Admin</h3>
<p>
<a href="?m=logout">Logout</a>
<p>
Menu-menu admin ada di sini</body>
</html>


auth.php

<?php
defined('_VALID') or die('not allowed');function init_login() { // Simulasi data account nama dan password
$nama = 'admin';
$pass = 'admin';

if (isset($_POST['nama']) && isset($_POST['pass'])) {
$n = trim($_POST['nama']);
$p = trim($_POST['pass']);
if (($n === $nama) && ($p === $pass)) {
// Jika sama, set cookie
setcookie('nlogin', $n);
setcookie('time', time());
// redireksi
?><script type="text/javascript">
document.location.href="./";
</script><?php
} else {
echo 'Nama/Password Tidak Sesuai';
return false;
}
}
}function validate() {
if (!isset($_COOKIE['nlogin']) || !isset($_COOKIE['time'])){
?><div class="inner">
<form action="" method="post">
<table border=0 cellpadding=5>
<tr>
<td>Nama</td>
<td><input type="text" name="nama" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="LOGIN" /></td>
</tr>
</table>
</form>
</div><?php
exit;
} if (isset($_GET['m']) && $_GET['m'] == 'logout') {
// Hapus cookie
if (isset($_COOKIE['nlogin'])) {
setcookie('nlogin', '', time() - 3 * 3600);
}
if (isset($_COOKIE['time'])) {
setcookie('time', '', time() - 3 * 3600);
}
// redireksi halaman
?><script type="text/javascript">
document.location.href="./";
</script><?php
}
}
?>


File yang akan dipanggil pertama kali adalah file index.php. Apabila user belum melakukan login, maka index.php akan memanggil auth.php untuk memasukkan username dan password.



Jika tampilan seperti di atas sudah muncul, maka user harus mengisi nama dan password. Jika salah, akan muncul tampilan yang memberitahukan bahwa nama atau password salah.



Jika nama dan password yang dimasukkan benar, maka tampilannya akan menuju ke index.php yang berisi konfirmasi bahwa user telah berhasil masuk.



Cookies merupakan salah satu metode yang biasa digunakan untuk sistem login pada beberapa website. masih ada beberapa cara lain yang juga digunakan untuk sistem login, misalnya : session yang mungkin akan dijelaskan pada posting yang akan datang.

Keep Fighting Spirit On The Fire...

1 komentar: