Membuat sistem "Remember Me" dalam PHP

1. buat statik variabel, statik variabel ini menyimpan variabel user dan password, statik variabel sebagai simulasi dari penggunaan database, pada sistem sebenernya pengecekan username dan password melalui data user di database.
<?php
 
$username="user";
$password=md5('user');

?>
2. buat form login, form-login.php
<html>

<head>
 <title>Login Dengan Remember me (cookies)</title>
</head>
<body>
<form method="post" action="login.php">

<p><label for="username">Username : <input type="text" name="username"  /></label></p>
<p><label for="password">Password : <input type="password" name="password" /></label></p>
<p><label for="setcookie"><input type="checkbox" name="setcookie" value="true" id="setcookie" /> Remember Me</label></p>

<p><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></p>
</form>
</body>
</html>
3. buat action untuk form, action ini akan menghandle pengecekan username dan mensetcookie jika fitur remember me di select.
<?php
//session start
session_start();
//panggil statik variabel username dan password
include('statik_variabel.php');
//get post
$user = $_POST['username'];   
$pass = $_POST['password'];
//untuk menentukan expire cookie, dihtung dri waktu server + waktu umur cookie   
$time = time();     
//cek jika setcookie di cek set cookie jika tidak ''
$check = isset($_POST['setcookie'])?$_POST['setcookie']:'';

if(($username==$user)&&($password==md5($pass))) { 
 //jika valid set session 1
   $_SESSION['logged'] = 1; 
 //jika remembere me, set cookie
 if($check) {  
 setcookie("cookielogin[user]",$user , $time + 3600);     
 setcookie("cookielogin[pass]", $pass, $time + 3600); 
 }
   //redirect member_area
   header('Location: http://localhost/ngulik/login_remember_me/member_area.php'); 
   exit(); 
}
else   
{
  header('Location: http://localhost/ngulik/login_remember_me/');
   exit();
}
?>
file login utama merupakan skrip utama untuk menghandle, apakah username dan password yang dimasukkan benar jika benar redirect page ke page "member_area.php", jika salah redirect page ke form-login.php. Selanjutnya cek kembali apakah fitur remember me diaktifkan? jika diaktifkan set cookie dengan nama username, berisi data $username, dengan waktu skrg + 3600 (1 jam dari sekarang).
4. buka kembali file form-login.php, kemudian modifikasi skripnya menjadi.
<html>

<head>
 <title>Login Dengan Remember me (cookies)</title>
</head>
<body>
<?php 
//masukkan variabel statik, variabel ini merupakan variabel yang username & password, untuk sistem pada realnya
//username dan password dapat di cek dari database.
include('statik_variabel.php');
//mulai session
session_start();
//cek cookie, dalam sistem login sederhana ini, cookie diberinama "cookielogin"
if(isset($_COOKIE['cookielogin'])){
 //cek cookie login dengan password dan username yang valid
 //$user = $_COOKIE['cookielogin']['username'];
 //print_r($user);
 if(($_COOKIE['cookielogin']['user']==$username)&&($_COOKIE['cookielogin']['pass']==$password)){
  print_r($_COOKIE);
  //jika valid set status login 1
  $_SESSION['logged']=1;
  //redirect ke halaman member area
  header('Location: http://localhost/ngulik/login_remember_me/member_area.php'); 

 }
}
?>
<form method="post" action="login.php">

<p><label for="username">Username : <input type="text" name="username"  /></label></p>
<p><label for="password">Password : <input type="password" name="password" /></label></p>
<p><label for="setcookie"><input type="checkbox" name="setcookie" value="true" id="setcookie" /> Remember Me</label></p>

<p><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></p>
</form>
</body>
</html>
5. buat halaman member_area.php
<?php 
session_start();
?>
<h1>Selamat Datang di Halaman Member Area.</h1><br/>
<a href="logout.php">Logout</a>
6. buat skrip logout.php
<?php
session_start();
session_unset();
session_destroy();
if(isset($_COOKIE['cookielogin']))  
{
$time = time();
 setcookie("cookielogin[user]", $time - 3600);
 setcookie("cookielogin[pass]", $time - 3600);
}
header('Location: http://localhost/ngulik/login_remember_me/');
exit();
?>
untuk melakukan testing pada skrip diatas, ketika kita mengaktifkan fitur remember me, kemudian login, kemudian kita close browser. kita akses kembali form-login.php maka akan secara otomatis masuk ke halaman member_area.php, mudah bukan? :D, semoga bermanfaat. 

Previous
Next Post »

Berkomentarlah dengan baik dan benar Show Konversi KodeHide Konversi Kode Show EmoticonHide Emoticon

Thanks for your comment