session timeout

saya ingin membatasi waktu untuk user yang masuk ke dalam aplikasi PHP, bagaimana caranya ya? pertama saya gunakan session, saya kira sudah bisa logout bila idle, ternyata ga bisa. hehehehe…

ya setelah konsultasi d google ternyata banyak cara, bisa dengan menghapus chace dan ada yang d kasih waktu. saya coba yang pake waktu, misal 15 menit setelah user masuk maka otomatis logout dan harus kembali login. contohnya :

login.php

<?php
require_once 'Functions/functions.php';

$strUserName = $_POST&#91;'username'&#93;;
$strPassword = $_POST&#91;'password'&#93;;
$strPasswordHash = strtolower(md5($strPassword));

$strLogin = "SELECT * from db_kar where nik_kar='". $strUserName ."' AND user_hash='". $strPasswordHash ."'";

$login=mysql_query($strLogin,$conn);

if(mysql_num_rows($login)==1)
{
  $row=mysql_fetch_array($login);
  $strname = $row&#91;'nam_kar'&#93;;
  $strstat = $row&#91;'status_kar'&#93;;
  session_start();

  $_SESSION&#91;'last_access'&#93; = time();
  $_SESSION&#91;'logged'&#93; = 1;
  $_SESSION&#91;'nam_kar'&#93; = $strname;
  $_SESSION&#91;'username'&#93; = $strUserName;

 }
else
{echo "Wrong Username or Password";
?>
	<body onload="alert('ERROR,Wrong Username or Password');window.location.assign('../utama.php');"></body>
	<?
}
?>

ceksession.php

<?php

session_start();
if (isset($_SESSION&#91;'logged'&#93;) && $_SESSION&#91;'logged'&#93; == 1) {
if ($_SESSION&#91;'last_access'&#93; + (15*60) < time()) {
session_destroy();
header("location: ../utama.php");
 exit;
}
} else {
  $redirect = $_SERVER&#91;'PHP_SELF'&#93;;
  header("Refresh: 3; URL=../utama.php?redirect=$redirect");
   echo "Session Expired, Please Login again
";
  die();
}
?>

ya mudah mudahan ini bisa berguna untuk yang baca… 😀

6 Responses to session timeout

  1. Arief Rivai says:

    Waw.. nice post!
    Akhirnya dapat algoritmanya juga..
    Makasih banyak yah gan..

    visit my personal blog :
    http://ariefcz.blogspot.com

  2. gan numpang nanya gan…klo kita implementasikan ke ujian online gmn gan?
    misalnya setelah 15 menit form ujian di submit…baru ntar barengan dengan dihilangkan nilai session tadi…
    gmn scriptnya tch gan?

  3. rifkyiip says:

    iya itu sama gan, stelah submit langsung checkseason,
    header(“Refresh: 3; URL=../home.php?redirect=$redirect”);
    3 itu menunjukkan 3 detik setelah submit.

  4. hafiz muhammad noer says:

    mau nanya, kalo pas logout, terus login ke halaman yang dia tinggalin gimana itu?

  5. rifkyiip says:

    Mas hafiz muhammad noer, terima kasih sudah berkunjung..
    boleh di coba code berikut:

    pada checksession.php:

    $redirect = $_SERVER[‘REQUEST_URI’];

    pada Login.php

    if(isset($_REQUEST[‘redirect’]))
    $url = $_REQUEST[‘redirect’]; // holds url for last page visited.
    else
    $url = “situsku/beranda.php”; // default page for

    header(“Location:”.$url);

  6. hafiz muhammad noer says:

    mas aku coba tebak ya harusnya kan dia masuk file terus di checksession.php nah abis itu ko aku selalu masuk ke yang

    session_start();
    if (isset($_SESSION[‘logged’]) && $_SESSION[‘logged’] == 1) {
    if ($_SESSION[‘last_access’] + (15*60) < time()) {
    session_destroy();
    header("location: ../utama.php");
    exit;
    }

    harusnya kan ke else baru ke login terus balik lagi.

    aku masuknya ke atas mulu jadinya ke halaman utama terus

Leave a comment